http强缓存在firefox和chrome之间的差异

最近回顾HTTP缓存知识的时候发现了一个问题,设置了强缓存和协商缓存的文件,刷新的时候在chrome和firefox中的表现不一样。具体表现为chrome走强缓存没有再次发起请求。firefox却在强缓存没有失效的情况下发了请求,返回了304走了协商缓存。

chrome请求截图:

chrome强缓存截图

firefox请求截图:

firefox强缓存截图

上面两种表现截然相反,但是并没有错误。主要原因在于浏览器点击刷新按钮时是否使用强缓存的实现各个浏览器不同。参考盗图如下:

http缓存在各个浏览器中的实现

通过测试发现firefox的http缓存完全符合上图描述,所以不是firefox的强缓存失效,而是本来刷新就应该忽略强缓存。而chrome刷新也使用强缓存是对http缓存的一种优化。所以两者应该都是对的

去除304的验证在目前来说还是很有用的,现在大部分网页都是工程化的结果,打包出来的文件名称都带上了hash,只要内容变了那么文件名一定会变化,反过来说文件名没有变那么内容一定没有改变,再去验证304就少了很多必要。

关于304的非必要性,详情可查参考1。

参考

[译] 这项浏览器调整使 Facebook 收到的网络请求减少了 60%

彻底理解浏览器缓存机制

http协议请求响应头中参数的疑问??

浏览器缓存机制

发布了48 篇原创文章 · 获赞 52 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/letterTiger/article/details/93481350