@r0semary

Как не превысить количество обращений к стороннему ресурсу со своего домена?

Ребята, привет!
Ранее не приходилось решать такого рода проблему, так что сразу и по порядку...
Цель состоит в том, чтобы мой сайт запрашивал медиа-ресурсы с другого api (или пусть даже сайта), который, как и положено, имеет ограниченное количество запросов за определенный промежуток времени, чтобы балансировать нагрузку.
Для своей стороны проблему вижу в таком ключе, что, как только, условно, ~10 пользователей сделают запросы с моего сайта в один и тот же момент времени, то апи другого домена просто вернет http code 429, а этого хотелось бы избежать. Прошу подсказать решение или вектор, куда копать (( про кэширование знаю только в теории. возможно, оно с этим делом связано, поэтому-таки и добавлен тэг ))
  • Вопрос задан
  • 296 просмотров
Решения вопроса 2
@JohnDidact
Нуб во всём
Такой вот круг: прежде, чем запросить инфу по апи, открывай файл и смотри, когда делал запрос, если меньше, чем, например, 10 минут назад, то отдавай кэш… если больше, то проси инфу по апи, обрабатывай её, сохраняй в кэш, в файл записывай время запроса.

Примерно так…
Ответ написан
@0x131315
Тебе нужен кеш.
Кеш - это хранилище, где каждый блок данных имеет как минимум два параметра: идентификатор и время жизни.
В простейшем случае это папка с файлами, где имя файла - это идентификатор, а время жизни вычисляется по разнице времени модификации файла и текущего времени.
Идентификатор однозначно идентифицирует блок данных. Обычно идентификатор - это хэш от сериализованного массива, в который помещают всё параметры, от которых зависит содержимое блока данных.
Например если данные на api зависят только от пути - айди это хэш от пути. А если ещё и от get-параметров, то к пути нужно добавить и эти параметры.
В таком случае, прежде чем обращаться к api, нужно посчитать хэш от запроса, и проверить, есть ли файл с таким именем в папке кеша, и не слишком ли он старый, и либо отдать данные из файла, либо обратиться к api, перезаписать файл полученными данными, и отдать данные.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы