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

Сохранение результатов в памяти - это не вариант, я вижу, что осталось два варианта:

  • Используйте базу данных nosql для получения кешированных результатов.
  • Сохраните результаты в CDN и перенаправьте HTTP-запрос (307 - временное перенаправление), если результат уже был кэширован.

Однако у меня нет большого опыта работы с CDN, и я задаюсь вопросом, является ли использование его для огромного количества временных небольших текстовых файлов хорошей практикой. Это хорошая практика - использовать перенаправление в запросе ajax? Является ли CDN подходящим решением для кеширования небольших текстовых файлов?

0
uzul 29 Янв 2013 в 11:53

1 ответ

Лучший ответ

Короткий ответ: нет.

Длинный: обычно вы используете CDN для больших статических файлов, которые вы хотите, чтобы CDN отображал по всему миру, чтобы он был ближе к пользователю, когда он их запрашивает. Когда у вас есть данные, которые сильно меняются, для распространения изменений на все узлы CDN всегда потребуется время, тем временем пользователи получают несогласованные результаты (это может иметь значение, а может и не иметь для вас значения).

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

0
mb21 29 Янв 2013 в 12:27
Спасибо за ваш ответ! Что, если я хочу кэшировать результаты в течение двух дней, задав заголовок cache-control, будет ли обычный CDN вести себя так, как ожидалось? Если это так, не обеспечит ли высокая доступность CDN хороший баланс с затратами на перенаправление?
 – 
uzul
29 Янв 2013 в 13:11