XMLHttpRequests是否缓存响应头?

时间:2011-05-08 00:32:36

标签: ajax http caching http-headers

如果我创建XMLHttpRequest并且浏览器缓存响应,它是否还会缓存HTTP响应头?也就是说,下次我发出相同的请求时,我会从response.getResponseHeader获得相同的值吗?

这与浏览器有关吗?

2 个答案:

答案 0 :(得分:1)

我确信至少主流浏览器不会尝试缓存标头。但是,如果要完全阻止缓存,则可能需要发送特殊标头。如果你想对缓存行为进行快速测试,可以在这里找到一个页面:

http://www.mnot.net/javascript/xmlhttprequest/cache.html

我建议如果你想看看实际发生了什么,你就得到一个像Wireshark这样的数据包嗅探器并亲自看看。我可以想象浏览器至少会对XmlHttpRequest执行HEAD请求,即使它为您提供了缓存的主体,但我可能是错的。

答案 1 :(得分:0)

标头未缓存或未重复使用。由于发送了请求,因此只接收标头,并且只有在缓存中此请求有效时才能确定。然后已经下载了新的标题,所以没有必要重复使用旧标题。

仅缓存响应正文。

你可以很容易地测试这个。向静态资源(img或txt文件或其他内容)发出XHR请求,并检查Date标题。

我认为这不依赖于浏览器。浏览器缓存和重用HTTP标头将非常非常奇怪。

修改
jQuery添加(默认情况下我认为)GET请求的反缓存参数(非常烦人),它会回答你的问题:没有像这样的缓存。