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

      web开发中常常遇到一些非常奇怪的问题。比如。发现了问题,改了脚本,结果公布后,问题依旧存在,但在server上一看,公布的脚本确实改了!!

    最后才发现,是浏览器缓存在作怪!


    如今讨论几种清除浏览器缓存的方法。

    一种原理是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 — 响应不会被缓存,而是实时向server端请求资源。这一点非常实用,这对保证HTTP 认证能够严格地禁止缓存以保证安全性非常实用(这是指页面与public结合使用的情况下).既没有牺牲缓存的效率。又能保证安全。
    • no-store — 在不论什么条件下,响应都不会被缓存,而且不会被写入到client的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

    • must-revalidate — 响应在特定条件下会被重用。以满足接下来的请求。可是它必须到server端去验证它是不是仍然是最新的。
    • proxy-revalidate — 相似于 must-revalidate,但不适用于代理缓存.
    详细使用:

    在网页head中加入

    <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输出的能够使用

    Response.Buffer = True ;
    Response.ExpiresAbsolute = Now() - 1 ;
    Response.Expires = 0 ;
    Response.CacheControl = "no-cache" ;
    Response.AddHeader "Pragma", "No-Cache" ;

    2加入查询字符串情况

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

    比如加入随机数

    document.write("<script src='test.js?rnd="+Math.random()+"'></s"+"cript>")
    加入时间戳

    url: "../SurveyGetRecordData.aspx?date="+(new Date().getMilliseconds())


    能够看到这两种方式,都是每次强制client从服务端读取数据,根本不使用缓存,但假设是js样式之类非常少变动的呢?使用缓存,假设改动了脚本,client总是使用没有改过的脚本。等于没有改动。!不使用缓存。脚本又非常少改动。每次都从服务端读取,没有必要!!

    怎样解决??

    事实上是非常easy,还是使用查询字符串,加入了一个相似版本的查询字符串。假设改动了,就把这參数改变。否则就不改,这样,就能够在须要时缓存,不须要时不缓存了。

    比如:

      <script type="text/javascript" src="../jquery-easyui/jquery-1.8.0.min.js?ver=1711"></script>





  • 相关阅读:
    HTTP 501 错误 – 未实现 (Not implemented) 或者是 Failure: Address already in use
    HTTP 400 Bad request 原因
    树莓派 NAS aria2 下载磁力链接无速度
    踩坑备忘之“yarn : 无法加载文件 C:\Users\siazon\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。"
    架构小试之IDL
    服务端基本概念和指标
    git常用命令
    mysql20211116
    blog JavaJinguo
    android 分享功能
  • 原文地址:https://www.cnblogs.com/llguanli/p/8758855.html
Copyright © 2011-2022 走看看