Den*_*nis 12 etag http cache-control browser-cache
即使我发送"缓存控制:必须重新验证",Google Chrome在浏览器中使用来回按钮时也会使用本地缓存页面.
这是原始回复的一部分:
HTTP/1.1 200 OK
cache-control: private, must-revalidate
etag: "c9239b5d4b98949f8469a05062e05bb999d7512e"
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
如果我刷新页面,我得到一个"HTTP/1.1 304 Not Modified"响应但是当我使用后退按钮时,我得到以下响应:
Request URL:example.com
Request Method:GET
Status Code:200 OK (from cache)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的响应是304或200 OK,是否有可能实现这一目标?
Jam*_*ess 17
使用后退和前进按钮时,键Cache-Control指令阻止浏览器返回页面的缓存副本no-store.
没有其他任何东西可以帮助,也不需要任何其他东西.你的Cache-Control标题可以简单地是:
Cache-Control: no-store
Run Code Online (Sandbox Code Playgroud)
但是有两个例外.
最后,我应该注意,通常不建议使用此指令,因为它显然会对带宽使用产生重大影响.浏览器甚至无法利用Etags获取304 Not Modified响应,因为在收到响应的情况下,它不会使用存储的副本304.
“必须重新验证”指令仅在响应失效后才适用(RFC2616, sec 14.9.4)。由于响应既不包含“Expires”标头也不包含“max-age”指令,浏览器可能将响应视为仍然新鲜并相应地返回缓存副本。为了防止这种情况,您应该在 Cache-Control 标头中包含“max-age: 0”(可能还有一个包含过去日期的 Expires 标头),以便缓存的响应立即变得陈旧。或者,为了防止缓存,请使用“no-cache”指令而不是“must-revalidate”。