网站正在狂测阶段,每发布一版之后,有时候会因为缓存导致错误,请问如何用代码控制,使浏览器加载新版本时不要用缓存呢?
我用过ajax 的,希望能给你有点帮助
ajax('test.txt?t='+new Date().getTime(),function(str){ // 获取时间戳 改变文件地址,防止一直从缓存中获取文件
alert(str);
})
你们可以 后台PHP或者java 控制
<meta HTTP-equiv="Pragma" content="no-cache">
这个只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。
可以在文件的后面加个时间戳
最方便的办法就是给URL直接加上时间戳类似 aa.com/?ver=2016093401
给所有的JS,CSS后面加上/a.js?ver=2016093401
后端语言 header禁用缓存
前端HTML meta禁用缓存
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
感谢大家的解答,我在这里将回答总结一下
写在前面
谢谢 @JounQin 的提点,这正是我所需要的功能。
meta 标签的控制
简单总结一下我刚才查的资料
http-equiv=“pragma"
使用content属性的no-cache值表示是否缓存网页http-equiv=“expires"
content设为日期能够控制缓存何时过期(注意必须使用GMT时间格式),等于0或-1禁用缓存浏览本站对于各项
cache-control
的解释,大家可以查看该链接操作文件名使浏览器重新加载文件
可以在文件名后面加上MD5,时间戳,哈希值等随机数
比如我使用的是webpack打包,此时可以在
webpack.config.js
中对output
的文件名进行配置对请求的url带上参数
这个我还没有进行实践,希望能够有更详细的补充
可以参考 @小桃酥的曲奇饼 的方法
传送门:怎样禁止微信内置浏览器的缓存?