Memcache для работы с API веб-сервисов с высокой задержкой - хорошая идея? - PullRequest
1 голос
/ 16 декабря 2009

У меня есть PHP-приложение, которое вызывает API-интерфейсы веб-служб для получения некоторых объектов перед рендерингом веб-страницы, содержащей эти объекты. В некоторых случаях эти API-интерфейсы очень медленные (секунды), и это неприемлемо с точки зрения пользовательского опыта. Я знаю, что могу сделать две вещи ...

  1. Используйте ajax и совершайте эти звонки в фоновом режиме
  2. Тайм-аут вызова и изящно ухудшить, если он занимает слишком много времени

Ни один из них не идеален, поэтому я думал об использовании memcache (расширение PHP для memcached) для кэширования объекта, который я получаю от стороннего веб-сервиса. Объекты будут загружаться много раз разными пользователями, загружающими одну и ту же страницу, так что, похоже, это имеет смысл.

Объекты относительно небольшие (~ 1 Кб).

Это звучит как разумный подход? Я знаю, что memcached изначально был разработан для облегчения загрузки базы данных, поэтому мне интересно, есть ли где-нибудь хитрость, которую я не вижу.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 16 декабря 2009

Это вполне законное использование memcache. Это не только для снижения нагрузки на базу данных, но и для кэширования и хранения объектов в целом. :)

Также обратите внимание, что в PHP есть два интерфейса для memcached. Смущает, что они называются " memcache " и " memcached ". Прочитайте их, чтобы выбрать между двумя:

3 голосов
/ 16 декабря 2009

Я бы настоятельно рекомендовал memcache для этой ситуации, так как он будет:

  1. Сокращение количества DNS-вызовов.
  2. Уменьшить задержку страницы.
  3. Сокращение использования полосы пропускания.

Ваша единственная реальная задача - определить, как часто будут меняться данные, с которыми вы имеете дело. Это поможет вам оптимизировать время истечения срока действия ключа (ей) кэша.

0 голосов
/ 16 декабря 2009

Этот подход может не работать в вашей ситуации, но вы можете использовать задания cron для вызова PHP-скрипта, который загружает необходимую информацию и затем кэширует ее в более быстрый источник данных (XML или базу данных).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...