最近在做微信内置页面时,发现内置浏览器页面缓存问题,由于微信内置的简易浏览器没有提供刷新功能,后台更新资源发现根本刷新不了。
后来研究发现,其缓存都是根据索引来缓存的,也就是说根据你资源的文件名来缓存。基于这个原理,我们可以把资源名字全部改了,比如一张图片以前叫 img.jpg,现在改成 img1.jpg,当然要同时记得改html代码里的索引。
下面是关于文件修改方式:
css和js带参数(形如.css?v=与.js?v=)
代码如下:
<script type=”text/javascript” src=”jb51.js?version=1.2.6″></script>
<link rel='stylesheet' href='base.css?version=2.3.3′ type='text/css' />
使用参数有两种可能:
第一、脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。
代码如下:
<script type=”text/javascript” src=”jb51.js”></script>
<link rel='stylesheet' href='base.css' type='text/css' />
但浏览器会认为他是该文件的某个版本!
第二、客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用。大家可能有时候发现修改了样式或者js,刷新的时候不变,就是客户端缓存了css或者js文件,因此加上参数还是有好处的!
第二种情况最多,也可能两种同时存在。
版本号,可以是一个随机数,也可以是一个递增的值,大版本小版本的方式,或者根据脚本的生成时间书写,比如 20080727182553 就是精确到了生成脚本的秒,而 2.3.3 就是大版本小版本的方式。