Freika
@Freika
Senior Ruby on Rails developer

Как кэшировать принимаемый json в Rails?

Ситуация: я обрабатываю большой json, получаемый с удаленного сервера, содержимое json изменяется время от времени, поэтому его нужно обновлять.

Вопрос: как мне закешировать полученные данные(порядка 15-30 мегабайт, тянуть каждый раз - ощутимо долго выходит), чтобы работать с ними, а когда будет сигнал, что пора обновить содержимое, перекачивать json заново?
  • Вопрос задан
  • 2375 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Вы не знаете, как закешировать, или не знаете, где взять сигнал, что данные обновились?
Кешировать можете в Redis. Для проверки актуальности данных можете делать HEAD перед самим запросом, он вам по идее вернет либо дату модификации контента, либо E-Tag.
Алгоритм примерно такой:
1. Вытащили из Redis дату модификации или E-Tag.
2. Запросили мета-информацию о JSON через HEAD.
3. Сравнили мета-информацию из HEAD с тем, что вытащили из Redis
4. Если совпадают, то у вас актуальный контент
5. Если не совпадают - вытаскиваете JSON через GET, сохраняете в Redis результат и метаинформацию.
6. Повторяете с интервалом в 5 минут, например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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