用户刷新页面时忽略HTTP缓存头

用户刷新页面时忽略HTTP缓存头,http,caching,browser-cache,Http,Caching,Browser Cache,我想了解我注意到的一些奇怪的浏览器行为。我有很多页面(为了实验起见),我提供了一些标题,我认为这些标题会导致页面被缓存: Cache-Control:max-age=3600 Content-Length:66 Content-Type:text/html Date:Thu, 06 Dec 2012 13:08:01 GMT Expires:Fri, 07 Dec 2012 14:19:41 GMT Server:Apache-Coyote/1.1 正如所料,当我通过另一个页面上的链接导航到其

我想了解我注意到的一些奇怪的浏览器行为。我有很多页面(为了实验起见),我提供了一些标题,我认为这些标题会导致页面被缓存:

Cache-Control:max-age=3600
Content-Length:66
Content-Type:text/html
Date:Thu, 06 Dec 2012 13:08:01 GMT
Expires:Fri, 07 Dec 2012 14:19:41 GMT
Server:Apache-Coyote/1.1
正如所料,当我通过另一个页面上的链接导航到其中一个页面时,浏览器会直接从缓存中取出该页面,而不会调用服务器。但是,当我通过按“浏览器刷新”按钮重新加载其中一个页面时,与缓存相关的标题似乎被忽略,请求被发送到服务器

我在最新版本的Chrome和Firefox以及IE9上看到过这种行为


HTTP标准是否规定对用户刷新发起的请求进行这种“特殊处理”(如果是,Google Chrome中“硬重新加载(Ctrl+Shitf+F5)”的目的是什么),或者是否有其他解释?

通常,当您请求页面时,浏览器“应该”向服务器发送一个HEAD请求,请求(仅限)您请求的文档的标题。如果您在POST或GET请求期间仅设置上述标题,这将解释为什么浏览器会认为文档已过期并重新蚀刻它

但是,从另一个角度来看,因为使用刷新功能的主要原因是“刷新”页面,所以浏览器不提供缓存副本,而是按要求执行=获取最新版本是有道理的,因为还有什么原因需要刷新


不过我可以确认,某些浏览器(例如chrome)在刷新期间不会更新所有资源(如linked.js文件),但它们会更新您刷新的页面

谢谢你的建议,但我已经添加了一些服务器端代码来检查HEAD请求,我看不到任何请求,所以这仍然是一个谜!我相信这只是因为没有人在不期望缓存也被刷新的情况下点击刷新。我真的看不出什么神秘那么,您理解刷新和硬刷新的区别是什么呢?硬刷新也会清除“引用资源”的缓存。。即:在和标记中引用的内容