目前,我们已经设置了一个“过期”头信息,其日期在过去(这一点似乎已经形成共识)。
但是,有些人建议设置以下头信息:
Cache-Control: no-cache, no-store, must-revalidate
这个头部的问题在于它防止浏览器保留文件的本地副本,因此每次都会下载文件,即使文件没有变化且返回码为200。如果只是使用下面的代码:
Cache-Control: no-cache
然后浏览器(至少 Firefox 14 和 Chrome 20)会保留本地副本,发送 If-Modified-Since
和 If-None-Match
头部信息,服务器返回 304 状态码,文件内容不会被下载。 这是针对那些可能随时更改的文件的最佳行为。
问题在于,我不知道仅设置“no-cache”是否足以强制所有浏览器(包括旧版本但仍在使用的版本)和代理服务器与服务端重新验证其本地缓存的副本。
最后,Pragma: no-cache
头部信息怎么样? 它也应该包含在 HTTP 响应中吗?