在现代的浏览器里,为了加强用户体验,浏览器通常都会把网页上所需的静态文件缓存到本地,再次刷新的时候则无需再从新加载,可是咱们有时候就是不须要浏览器缓存这些文件,而是每次都从服务器端读取数据,能够用如下作法:javascript
1.在html文件头部加上:css
<meta HTTP-EQUIV="pragma" CONTENT="no-cache"> <meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> <meta HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> <meta HTTP-EQUIV="expires" CONTENT="0">
然而这些仍是不够的,有些浏览器仍是缓存了文件,那么就必须给每一个文件加个后缀时间戳,告诉浏览器这个是新文件,必须从新加载,浏览器就会重新到服务器端读取数据文件显示出来。html
<link href="reset.css?v=20150127" rel="stylesheet">
Set-Cookie (cookie设定)
说明:浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提升速度。当你但愿访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。一般HTML文件没有必要禁用缓存,对于ASP等页面,就能够使用禁用缓存,由于每次看到的页面都是在服务器动态生成的,缓存就失去意义。若是网页过时,那么存盘的cookie将被删除。
用法:java
<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,21-Oct-98 16:14:21 GMT; path=/">
注意:必须使用GMT的时间格式。jquery
2.js清除浏览器缓存 ajax
为了减少浏览器与服务器之间网络传输压力,每每对静态文件,如js,css,修饰的图片作cache,也就是给这些文件的HTTP响应头加入 Expires和Cache-Control参数,并指定缓存时间,这样必定时间内浏览器就不会给服务器发出任何的HTTP请求(除了强制刷新),即便在 这段时间内服务器的js或css或图片文件已经更新屡次,但浏览器的数据依然是原来最能初cache的旧数据,有没有办法让浏览器拿到已经修改后的最新数 据呢?
有,方法是用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,以下: segmentfault
$.ajax({ type: "GET", url: "static/cache.js", dataType: "text", beforeSend :function(xmlHttp){ xmlHttp.setRequestHeader("If-Modified-Since","0"); xmlHttp.setRequestHeader("Cache-Control","no-cache"); } });
这里用了jquery.
这样浏览器就会把最新的文件替换掉本地旧文件。
固然,这里还一个问题就是js必须知道服务器更新了那个js、css、图片,利用cookie和时间版本应该能够解决.
jquery自从1.2开始就有ifModified和cache参数了,不用本身加header
ifModified Boolean Default: false
Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header.
cache Boolean Default: true
Added in jQuery 1.2, if set to false it will force the pages that you request to not be cached by the browser. 浏览器
$.ajax({ type: "GET", url: "static/cache.js", dataType: "text", cache:false, ifModified :true });
3.如何去除图片缓存缓存
在Web网站中,有时候修改图片显示仍然不是最新的,这是因为浏览器对图片的缓存形成.服务器
(1)给图片url添加随机数参数,使浏览器每次从新请求图片(可是在IE浏览器中,缓存有可能仍是不能清除,能够使用下面第二种方法)
<div class="login_main"> <div class="login_ptxt"> <div class="login_p"> <img alt=\"用户头像\"/> </div> </div> </div> $(".login_main .login_p img").attr("src", userIconUrl + "?temp=" + Math.random());//userIconUrl为图片URL
(2)第二种方法:动态添加img元素
<div class="login_main"> <div class="login_ptxt"> <div class="login_p"> <!--动态添加img标签--> </div> </div> </div> $(".login_main .login_p").append("<img alt=\"用户头像\"/>"); $(".login_main .login_p img").attr("src", userIconUrl + "?temp=" + Math.random());//userIconUrl 为图片URL
最后引用网上的评论:
MD5参考:https://segmentfault.com/a/1190000002932998