zoukankan      html  css  js  c++  java
  • 如何清除浏览器缓存?

    web开发中经常遇到一些很奇怪的问题,例如,发现了问题,改了脚本,结果发布后,问题依然存在,但在服务器上一看,发布的脚本确实改了!!最后才发现,是浏览器缓存在作怪!!

     

    现在讨论几种清除浏览器缓存的方法。

    一种原理是HTTP Header 参数Cache-Control来清空缓存,另一种是利用URL上添加查询字符串来欺骗浏览器强制从服务端读取数据,避免缓存。

     

    1利用HTTP协议清空

    Cache-Control 的参数包括:

      • max-age=[单位:秒 seconds] — 设置缓存最大的有效时间. 类似于 Expires, 但是这个参数定义的是时间大小(比如:60)而不是确定的时间点.单位是[秒 seconds].
      • s-maxage=[单位:秒 seconds] — 类似于 max-age, 但是它只用于公享缓存 (e.g., proxy) .
      • public — 响应会被缓存,并且在多用户间共享。正常情况, 如果要求 HTTP 认证,响应会自动设置为 private.
      • private — 响应只能够作为私有的缓存(e.g., 在一个浏览器中),不能再用户间共享。
      • no-cache — 响应不会被缓存,而是实时向服务器端请求资源。这一点很有用,这对保证HTTP 认证能够严格地禁止缓存以保证安全性很有用(这是指页面与public结合使用的情况下).既没有牺牲缓存的效率,又能保证安全。
      • no-store — 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。
      • must-revalidate — 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
      • proxy-revalidate — 类似于 must-revalidate,但不适用于代理缓存. 具体使用:

        在网页head中添加

        1
        2
        3
        <meta http-equiv="pragma" content="no-cache">
           <meta http-equiv="content-type" content="no-cache, must-revalidate">
           <meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT">
        使用asp.net输出的可以使用
        1
        2
        3
        4
        5
        Response.Buffer = True ;
        Response.ExpiresAbsolute = Now() - 1 ;
        Response.Expires = 0 ;
        Response.CacheControl = "no-cache" ;
        Response.AddHeader "Pragma", "No-Cache" ;

        2添加查询字符串情况

        一般有两种方式,添加随机数,添加时间错

        例如添加随机数

        1
        document.write("<script src='test.js?rnd="+Math.random()+"'>")
        添加时间戳
        1
        url: "../SurveyGetRecordData.aspx?date="+(new Date().getMilliseconds())

         

        可以看到这两种方式,都是每次强制客户端从服务端读取数据,根本不使用缓存,但如果是js样式之类很少变动的呢?使用缓存,如果修改了脚本,客户端总是使用没有改过的脚本,等于没有修改!!不使用缓存,脚本又很少改动,每次都从服务端读取,没有必要!!如何解决??

        其实是很简单,还是使用查询字符串,添加了一个类似版本号的查询字符串,如果修改了,就把这参数改变,否则就不改,这样,就可以在需要时缓存,不需要时不缓存了。

        例如:

        1
        <script type="text/javascript" src="../jquery-easyui/jquery-1.8.0.min.js?ver=1711"></script>
  • 相关阅读:
    如果你的领导是力量型,你在汇报工作时应该注意()。
    项目管理的10项原则
    扑克k,你知道的人物吗?
    搭建属于您自己的软件版本控制
    Android保持屏幕常亮的方法
    BMP图像数据格式详解
    Android终止线程的方法
    使用ContentProvider访问其他应用的SharedPreferences数据
    android gps定位LocationManager
    Android属性之build.prop生成过程分析
  • 原文地址:https://www.cnblogs.com/tian830937/p/5121146.html
Copyright © 2011-2022 走看看