У меня есть приложение PHP, которое вызывает API-интерфейсы веб-сервисов, чтобы получить некоторые объекты до предоставления веб-страницы, содержащей эти объекты. В некоторых случаях эти API очень медленные (в секундах), и это неприемлемо с точки зрения пользователя. Две вещи, которые я знаю, я могу сделать …
Идея не идеальна, поэтому я думал об использовании memcache (расширение PHP для memcached) для кэширования объекта, который я получаю от стороннего веб-сервиса. Объекты будут загружаться много раз разными пользователями, загружающими одну и ту же страницу, поэтому это имеет смысл.
Объекты относительно малы (~ 1k).
Это звучит как разумный подход? Я знаю, что memcached изначально был разработан для облегчения загрузки базы данных, поэтому мне интересно, есть ли где-то, что я не вижу.
Благодарю.
Это вполне законное использование memcache. Это не только сокращение загрузки базы данных, но и кэширование и хранение объектов в целом. 🙂
Также обратите внимание: PHP имеет два интерфейса для memcached. Смутно, они называются « memcache » и « memcached ». Прочтите их, чтобы выбрать между ними:
Я настоятельно рекомендую memcache для этой ситуации, как это будет:
Ваша единственная реальная задача – определить, как часто данные, с которыми вы имеете дело, будут меняться. Это поможет вам оптимизировать время истечения срока действия ключей (ов) кеша.
Этот подход может не работать для вас в вашей ситуации, но вы можете использовать задания cron для вызова PHP-скрипта, который загружает требуемую информацию, а затем кэширует ее на более быстрый источник данных (XML или Database).
Это может не сработать, если информация обновляется очень часто или если есть много разных данных, которые необходимо загрузить, но это вариант. Я использовал этот подход для других задач, требующих много времени для завершения, и нашел, что это разумное решение.