У меня есть страница, доступ к которой можно получить по URL-адресу /products. Когда я посещаю его в браузере, он отвечает полной страницей в макете. Вот упрощенный пример заголовков запроса и тела ответа:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
<layout>
<products />
</layout>
Когда пользователь выполняет поиск, javascript обновляет результаты через AJAX. Результаты рендерятся без макета, так как рендеринг требует времени, а мне он все равно не нужен:
Accept: */*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
X-Requested-With: XMLHttpRequest
<products />
Итак, это работало нормально, пока я не добавил кеширование Cache-Control: private, max-age=3600
. Первоначально я думал, что добавлю заголовок Vary: X-Requested-With
, и браузер различит два ответа. Однако, когда я получаю /products через AJAX, а затем посещаю /products в браузере, он отображает частичный ответ AJAX.
Есть ли простой способ решить эту проблему?
P.S. Я использую Ruby on Rails и jQuery, если это имеет значение.