【发布时间】:2012-07-29 02:16:27
【问题描述】:
我们有几个文件通过 HTTP 提供,并且不时更改。
哪些是与缓存相关的 HTTP 标头,我们应该在 HTTP 响应中返回以优化浏览器加载速度,同时强制浏览器验证它是否具有文件的最新版本?
我们已经设置了一个带有过去日期的“Expires”标头(此时似乎达成了共识)。
但后来有人建议设置这个标题:
Cache-Control: no-cache, no-store, must-revalidate
但是这个标头的问题是它阻止浏览器保留文件的本地副本,所以每次下载文件,即使它没有改变,响应码为 200。
如果我只是使用:
Cache-Control: no-cache
然后浏览器(至少Firefox 14和Chrome 20)保留本地副本,发送If-Modified-Since和If-None-Match标头,服务器返回304码,文件内容没有下载。 这是这些文件可以随时更改的最佳行为。
问题是我不知道仅仅设置“无缓存”是否足以强制所有浏览器(包括旧但仍在使用的版本)和代理服务器重新验证其本地缓存副本与服务器。
最后,Pragma: no-cache 标头呢?它也应该包含在 HTTP 响应中吗?
【问题讨论】:
-
如果您有答案,您应该写下自己的答案并将其标记为答案,而不是在您的问题中添加粗体陈述。
-
@AlexisWilke 粗体声明不是我问题的答案,只是我想强调的。
标签: http caching cache-control http-caching no-cache