对的,这就是解决浏览器js缓存的关键。**在引入js的时候在引入路径中加一个js的版本参数,在你服务器端更新js文件的时候,就更改这个参数,这样客户端的浏览器就会马上读取服务器端最新的js文件,达到了清除浏览器js缓存的效果。**
先就这个问题提供解决方法
<script src="/Public/Home/js/common.js?ver=1.0" type="text/javascript"></script>
观察一下以上js引入方式和你的引入方式有什么不同?多了一个‘?ver=1.0’参数。对的,这就是解决浏览器js缓存的关键。在引入js的时候在引入路径中加一个js的版本参数,在你服务器端更新js文件的时候,就更改这个参数,这样客户端的浏览器就会马上读取服务器端最新的js文件,达到了清除浏览器js缓存的效果。
为何这种方式是行之有效的
一般浏览器第一次打开网站的时候会对静态的文件做缓存处理,等再一次打开页面的时候,通过这个请求地址浏览器会向服务器发一个信息来判断这个文件是否做了更新处理,如何发现链接是老链接那么就直接读缓存文件。使用debug查看network缓存文件的请求状态为302。所以当你在src加一个参数的时候,那么这个src请求地址就是新的,服务器会把他当作一个全新的请求处理,把更改后js文件重新传给客户端。
浏览器为何总爱缓存js
对于开发者而言我对于缓存我是拒绝的,因为每次代码更新的时候,客户端总是没能及时更新过来,浪费了大把调试时间。但对于普通用户而言,缓存能减少请求,提升网站的响应时间,提高用户体验。并且这种缓存方式是浏览器的自身行为,即并非程序员通过代码的形式主动去设置缓存,所以程序员才会有这样一个问题需要解决。
清除静态文件(js,css,img等)缓存的误区
<meta http-equiv="Cache-Control" content="no-cache">
很多人觉得用以上的方式可以解决,js缓存的问题。很明显这是徒劳的,这个只能解决html页面缓存问题,对于页面中的静态文件(js,css,img等)的缓存是不起任何效果的,不信你试试!
以这个问题探讨网络应用的好处
这个问题有包含两个方面内容,第一个是清除开发者自己的浏览器缓存,另外一个就是用户的浏览器缓存。自己的电脑清除很容易一个‘ctrl+shift+delete’快捷键就能清除缓存,但是对于用户的浏览器,你总不可能指望用户也会这么做。这种解决方式只能服务器端做处理。网络应用做大的好处在于代码跑在服务器端上,代码的更新迭代不需要通知用户。不像桌面应用,代码更新都要通知用户升级打补丁,而我们只要默默的加一个版本参数,用户就可获取全新的功能。
好了,这一个小功能就能写出这么一堆大道理,不得不由衷佩服自己。
除特别注明外,本站所有文章均为作者原创。 或分享自己的编程经验,或探讨工作中的问题,或聊以人生趣事。 转载请注明出处来自 https://www.qiusuoweb.com/60.html
运营天数
总访问量
文章数量
-
-
-
交流群:157451741
新浪微博:草莽兴
发布评论