Данные кеширования, полученные из API

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

Чтобы прояснить мою точку зрения, вот как я представляю последовательность:

  1. Запрос в первый раз в API для получения данных
  2. Сохраните данные в моей БД и запросите то, что нужно пользователю, таким образом
    минимизируя время, необходимое для извлечения данных, а также количество
    запрос отправлен на сервер
  3. Установите автоматически / вручную определенный график, по которому я бы отправил
    еще один запрос к API, чтобы узнать, были ли добавлены новые данные

Мой вопрос: мой подход выполним и эффективен, или все это можно сделать гораздо более простым способом?

ОБНОВИТЬ:

Я бы использовал gAdventures API для перечисления различных туров вместе с их деталями.

  1. Максимальное количество туров, возвращаемых по запросу, составляет 100.
  2. Чтобы получить сведения о туре, возвращенному идентификатору тура должен быть отправлен запрос на получение всех подробностей, касающихся его, поэтому речь идет о тысячах поездок. Точный размер данных недоступен до сих пор.

0

Решение

Я рекомендую использовать мою библиотеку Swiss Cache. Он поддерживает файловое кэширование и APC. Даже кеш изображений (WIP). Если объем данных большой, моя библиотека поддерживает сжатие Gzip по умолчанию. Столь большие объемы данных автоматически сжимаются.

Пример кода моей библиотеки:

//Your API request function...
require_once("swiss_cache.php");

$cache = new swiss_cache();

$data = $cache->get("gAdventures_response");

if(!$data)
{
$data = someFunctionThatCallsTheService();
$cache->set("gAdventures_response", $data, 3600); //Save data for one hour.
}

Просто убедитесь, что вы установили путь к кешу в swiss_cache.php! 🙂 Если у вас есть какие-либо проблемы или вопросы с моей библиотекой. Просто отправьте мне сообщение! Документация находится в стадии разработки.

https://github.com/ajm113/swiss_cache

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]