архитектура для получения и хранения данных запроса API

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

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

Может кто-нибудь посоветовать лучшее решение? Что-то в направлении аналогичной функции php или javascript, которая выполняет запрос в фоновом режиме, планирует обновление и импортирует данные в mysql? Если так, то какой язык будет наиболее распространенным.

Мне нужно решение для среды Joomla / php / mysql

Всего 2 ответа


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

Поскольку хранить что-либо во внешнем интерфейсе JS при перезагрузке страницы нелегко, для этого нужно использовать PHP. Исходя из того, что дано, у вас, кажется, есть два способа вызова API:

  • через интерфейс JS (без движения)
  • через ваш PHP-бэкэнд (готовый к работе)

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

Добавьте фрагмент к вашему PHP-коду, который содержит переменную $lastUpdated (или что-то подобное), и присвойте ему «статическое» значение текущего времени (НЕ используя time() ). Теперь добавьте пару операторов для обновления сохраненных результатов, if текущее время по крайней мере на 24 часа больше, чем $lastUpdated , с последующим обновлением $lastUpdated до текущего времени.

Это должно дать вам то, что вам нужно, с одним вызовом API в день.

PS: я не эксперт в PHP, но вы наверняка можете разобраться с датой и временем.


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

Посмотрите на что-то вроде Redis . Здесь также доступна статья: https://www.compose.com/articles/api-caching-with-redis-and-nodejs/


Есть идеи?

10000