Лучшая практика кэширования друзей Facebook в приложении Rails?

У меня есть веб-приложение Rails (Devise + Koala), в котором пользователи входят в систему с помощью Facebook. Пользователи взаимодействуют со своими друзьями на Facebook внутри приложения.

Импорт списка друзей пользователей Facebook для целей кэширования занимает много времени.

Каковы наилучшие методы здесь: Должен ли я вообще избегать кэширования друзей? Должен ли я выполнять импорт в фоновом потоке демона?

Мне известно об API Facebook для обновлений в режиме реального времени.


person Tom Söderlund    schedule 23.07.2012    source источник


Ответы (1)


Хранение списка в кеше займет меньше времени, чем поиск друга пользователя на Facebook каждый раз, когда вы хотите его получить.

В Postgres есть тип данных hstore, который позволяет хранить данные в столбце в виде хэша, а не сериализованного типа. Вы можете добавить в рельсы этот гем: https://github.com/softa/activerecord-postgres-hstore

Это упрощает хранение таких вещей, как кеш друзей в Facebook; вы можете выполнять поиск по хешу с помощью операторов SQL.

Таким образом, в вашем случае вы можете указать facebook подписаться на изменение подключения друзей пользователя и указать его на обратный вызов в вашем приложении, который обновляет кеш списка друзей пользователя. Обратите внимание, что вам нужно будет заменить весь хеш новым списком, так как атомарные операции с hstore невозможны. Удачи!

person tom    schedule 20.08.2012