Intereting Posts
AS3 Растровое хранилище Android: загрузка файла на страницу вместе с другими строками POST Массивы из нескольких форм загрузки, Загрузка изображений, а затем вставка в базу данных (PHP, MySQL) Как изменить временную метку по умолчанию, которую использует PHP для входа в файл? Как загрузить изображение в базу данных с помощью php-скрипта? Загрузить фотографию в альбом с помощью API-интерфейсов Facebook Поле jQuery popup, работающее в цикле while Как сделать пакет апелляции, включающий ключ? используя кавычки без одинарных кавычек и двойные кавычки в значении $ _POST мое изображение captcha, которое не отображается на моей странице при вызове captcha.php magento – получить все категории детей с идентификатором категории Вытащить 5 случайных записей из базы данных mysql Преобразование PDF в строку PHP Stomp: чтение всех сообщений в очереди Когда * не * использовать подготовленные заявления?

Memcache для работы с API-интерфейсами с высоким временем ожидания – хорошая идея?

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

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

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

Объекты относительно малы (~ 1k).

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

Благодарю.

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

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

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

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

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

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

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