F5刷新浏览器不缓存静态资源
来源:互联网 发布:神知世界txt下载 编辑:程序博客网 时间:2024/05/16 17:06
最近在优化线上的一个web站点,发现很多CSS和js按F5刷新的时候,不缓存,这个可是一个可以优化的点啊!
第一反映就是检查是否配置了缓存,用浏览器查看response header如下:
看到这个response header 就更加让人奇怪了,明明配置了缓存,也配置了过期时间,为什么按F5刷新页面没有出现304 Not modify ?
然后想到找个缓存了的来对比下,正常缓存的response header如下:
比较发现,能够正常缓存的response header中多了ETag和Last-Modified这两个field。由此,在本地测试环境中,去掉这两个field.
在Apache的http.conf中加入如下配置:
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
Header unset ETag
Header set X-Content-Type-Options nosniff
Header unset Last-Modified
</IfModule>
去掉response header中的ETag和Last-Modified后,按F5刷新,就不出现缓存了。
后来认真看了下资料,发现这个问题是自己对于浏览器缓存的机制,没有认识清楚。
官方正解:
Expire只是让静态资源缓存到本地并设置过期事情,所以用回车或后退触发的请求或直接使用本地缓存。
F5刷新会跳过本地缓存,发起一个请求到服务器,然后与服务器协商,如果服务器上没有变动则返货304(Not-Modified)并使用本地资源,
否则从服务器返回最新的资源。
- F5刷新浏览器不缓存静态资源
- f5刷新不好使
- JavaScript阻止浏览器F5刷新
- 静态页面时,Firefox F5刷新,input类标签不刷新
- 浏览器中F5刷新和crtl+F5的区别
- 前端告别浏览器F5刷新
- F5与CTRL+F5区别,浏览器缓存机制
- 禁止后退按钮和浏览器刷新后不缓存
- 解决因浏览器缓存不刷新网页的问题
- 解决IE浏览器下缓存不刷新问题。
- 怎样防止浏览器刷新重复提交数据(F5,右键刷新)
- 浏览器刷新+缓存原理
- 在浏览器中,按f5(浏览器中的刷新按钮),与f5+ctrl 、回车的区别
- 浏览器前进、后退键时刷新页面而不读取缓存,重新刷新页面
- Nginx静态资源缓存
- css---火狐浏览器下按F5刷新checkbox仍然选中
- Javascript-禁用浏览器右键和F5刷新功能
- 浏览器静态资源的版本控制新思路.强制更新指定资源缓存.的探讨
- mybatis-generator 源代码修改
- 深入浅出设计模式(1)
- L版本开机提示“Android正在升级或启动”
- web自动发送邮件
- Hibernate Tools使用说明
- F5刷新浏览器不缓存静态资源
- adb 详解下
- 视觉注意模型中的颜色特征划分
- Qt中SQLite3的增、删、改、查操作
- 内存对齐问题
- 使用retrofit实现微信登录的相关接口
- 获取utf8编码字符串正确长度的方法
- 如何写出象形文字,货币符号
- Unity3D-项目总结-类CS射击局域网版