Браузер не различает частичный HTML, полученный через AJAX, и полную страницу

У меня есть страница, доступ к которой можно получить по 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, если это имеет значение.

6
задан Simon Perepelitsa 7 July 2012 в 01:16
поделиться