Как я могу кэшировать динамические данные из REST API, используя PHP? - PullRequest
2 голосов
/ 22 ноября 2010

ОБНОВЛЕНИЕ: Я решил воспользоваться приведенным ниже советом и внедрить уровень Memcached в свое приложение. Теперь у меня есть другая мысль. Было бы возможно / хорошая идея сделать запрос AJAX в опросе (скажем, каждые пять или десять минут), который проверяет Memcached и затем обновляет, когда истекает Memcached? Таким образом, конечный пользователь никогда не сталкивается с задержкой, поскольку он выполняется в фоновом режиме.


Я использую REST API Directed Edge для рекомендаций по моему веб-приложению. Проблема, с которой я сталкиваюсь, заключается в том, что я запрашиваю значительное количество рекомендаций в нескольких местах по всему сайту, и задержка является значительной, заставляя страницу загружаться примерно на 2-5 секунд для каждого запроса. выглядит ужасно.

Я не использую PHP-привязки Directed Edge, а вместо этого использую некоторые PHP-привязки, которые я написал сам. Вы можете увидеть привязки на GitHub . Я подключаюсь к их API, используя cURL .

Как я могу кэшировать данные, которые я получаю? Я открыт для любого количества методов, если они довольно просты в реализации и достаточно гибки.

Вот пример кода клиента для получения рекомендаций.

$de = new DirectedEdgeRest();
$item = "user".$uid;
$limit = 100;
$tags = "goal";
$recommendedGoals = $de->getRecommended($item, $tags, $limit);

1 Ответ

2 голосов
/ 22 ноября 2010

Вы можете кэшировать в файл, используя serialize и file_put_contents:

file_put_contents("my_cache", serialize($myObject));

Вы также можете кэшировать в memcached или базу данных.

...