我有一个可以通过 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
标题,但浏览器会区分这两个响应。但是,当我通过 AJAX 获取 /products 然后在浏览器中访问 /products 时,它会显示部分 AJAX 响应。
有没有简单的方法来解决这个问题?
PS 如果这很重要,我正在使用 Ruby on Rails 和 jQuery。