如果我创建XMLHttpRequest并且浏览器缓存响应,它是否还会缓存HTTP响应头?也就是说,下次我发出相同的请求时,我会从response.getResponseHeader
获得相同的值吗?
这与浏览器有关吗?
答案 0 :(得分:1)
我确信至少主流浏览器不会尝试缓存标头。但是,如果要完全阻止缓存,则可能需要发送特殊标头。如果你想对缓存行为进行快速测试,可以在这里找到一个页面:
http://www.mnot.net/javascript/xmlhttprequest/cache.html
我建议如果你想看看实际发生了什么,你就得到一个像Wireshark这样的数据包嗅探器并亲自看看。我可以想象浏览器至少会对XmlHttpRequest执行HEAD请求,即使它为您提供了缓存的主体,但我可能是错的。
答案 1 :(得分:0)
标头未缓存或未重复使用。由于发送了请求,因此只接收标头,并且只有在缓存中此请求有效时才能确定。然后已经下载了新的标题,所以没有必要重复使用旧标题。
仅缓存响应正文。
你可以很容易地测试这个。向静态资源(img或txt文件或其他内容)发出XHR请求,并检查Date
标题。
我认为这不依赖于浏览器。浏览器缓存和重用HTTP标头将非常非常奇怪。
修改强>
jQuery添加(默认情况下我认为)GET请求的反缓存参数(非常烦人),它会回答你的问题:没有像这样的缓存。