如何防止浏览器缓存




常遇到一种情况,写了一个页面。然鹅由于缓存缘故导致无法实时查看效果。换来换去简直逼疯人。有些方法比较好用但是必须从服务端,很多时候我们并没有服务器权限所以只能从代码上动手。


列出几种百度上常看到的强制禁止(大概)浏览器缓存的方法。

html设置mate

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT">

通过设置参数和过期时间来实现无缓存。但是有时候架不住浏览器流氓。

于是我们常常在有些网站的页面中看到一类奇怪的引入代码

比如:





明明只是一些文件为什么还要在后面加上一个参数

这些其实就是用来防止浏览器缓存的。由于文件不会处理参数,在它后面加上参数后浏览器会认为这是个新文件,就会重新从服务器获取,那么只要这参数不在短期内重复那么就可以实现禁止缓存了。(来自菜鸡的推测)

举一些例子

JS

var s=Math.random()*10;
document.getElementById("checkCodeImg").innerHTML="<img src='/checkcode.jsp?rnd="+s+"'/>";

PHP

$suiji=rand(0,10);
echo "<center><img style='max-width:100%' src=photo/upload/$id/$id".'_'."$randomString".'.jpg?'."$suiji".'></center>';

使用随机数函数,给文件后面加上随机参数。当然随机参数有可能会重复,即使概率低但依然会。所以可以使用时间戳来代替,时间的不可重复是最完美的参数。

声明:阿硕的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 如何防止浏览器缓存


Carpe Diem and Do what I like