如何清除浏览器缓存?

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中添加

<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())

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

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

例如:

  <script type="text/javascript" src="../jquery-easyui/jquery-1.8.0.min.js?ver=1711"></script>
时间: 2024-12-12 05:57:39

如何清除浏览器缓存?的相关文章

清除浏览器缓存的方法

清除浏览器缓存的方法 1 避免HTML页面缓存  在页面中的<head></head>中添加 <meta HTTP-EQUIV="Pragma" CONTENT="no-cache"> <meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <meta HTTP-EQUIV="Expires" CONTE

js清除浏览器缓存的几种方法

关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些 错误的数据.像股票类网站实时更新等,这样的网站是不要缓存的,像有的网站很少更新,有缓存还是比较好的.今天主要介绍清除缓存的几种方法. 清理网站缓存的几种方法 meta方法 //不缓存 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP

清除浏览器缓存

meta方法 //不缓存 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="0"> jquery a

前端开发JavaScript清除浏览器缓存的方法

查看和删除浏览器缓存的方法=====>打开 最近在开发项目中发现有时候总要频繁地清除浏览器缓存,不然总是显示的过时的信息 浏览器缓存有利有弊,有些数据需要缓存下来使得页面打开更快提高网站性能,但有些缓存内容又必须清除,缓存可能会导致一些错误数据被展示. 介绍一些清除浏览器缓存的方法: 方法一:利用meta标签 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV=&quo

手机网页调试·清除浏览器缓存的方法

在手机里调试网页的时候,总是为清除缓存烦恼.特别是QQ浏览器.最后甚至有同学开发出了Android下一键清除清除各种浏览器缓存的APP,但需要root,且每次耗时不短.最后经过尝试,发现了一个方便.有效的方法.那就是利用HTTP的响应头,强制浏览器不缓存资源. NodeJS 中的实现方法: NodeJS中可以通过设置一下方法设置响应头 res.setHeader("CacheControl", 'no-cache'); res.setHeader("Expires"

js清除浏览器缓存

浏览器缓存 所有的数据都可以存到服务器中,但这样并不高效,当我们访问网页的时候,一会卡顿,二会浪费服务器的存储空间,三会给服务器造成压力 浏览器缓存,可以提高网站性能和浏览器的速度,但对于需要经常更新的网页来说,缓存导致用户无法显示更新后的样式 如何通过js清除缓存? 随机数 脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别. 即路径或者文件名后的随机数对于文件来说 等价于但浏览器会认为他是 该文件的某个版本! 客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改

静态页面清除浏览器缓存

在做官网开发中出现静态页之后,即使发布了新的版本之后,还是会读取浏览器缓存,导致页面不是最新页面. 解决措施: 1.meta方法: <meta htpp-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache,must-revalidate"> <meta http-equiv=&q

C# 通过调用Win32 API函数清除浏览器缓存和cookie

public enum ShowCommands : int { SW_HIDE = 0, SW_SHOWNOrmAL = 1, SW_NOrmAL = 1, SW_SHOWMINIMIZED = 2, SW_SHOWMAXIMIZED = 3, SW_MAXIMIZE = 3, SW_SHOWNOACTIVATE = 4, SW_SHOW = 5, SW_MINIMIZE = 6, SW_SHOWMINNOACTIVE = 7, SW_SHOWNA = 8, SW_RESTORE = 9, S

chrome插件演示,经js转让chrome api清除浏览器缓存

一个简单的chrome插件演示,主页脚本.内容脚本.背景和脚本之间的通信api呼叫.在此之上可以延长通话等chrome api. 下载链接:http://download.csdn.net/detail/sweetsuzyhyf/7850529 版权声明:本文博主原创文章,博客,未经同意不得转载.