js清除缓存
浏览器缓存
浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能。但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数据。像股票类网站实时更新等,这样的网站是不要缓存的,像有的网站很少更新,有缓存还是比较好的。今天主要介绍缓存问题的情况,以及清除缓存的几种方法。
缓存问题
首先介绍下出现缓存问题的情况:
情况一:form表单缓存:
在客户端有一个html文件,用来提交输入信息,问题在于:每次按刷新时,发觉并不是整个页面重新被装载,好似是缓存中。因为文本框中仍出现上次输入的值,只有在地址栏中按回车整个页面才重新装载,应当怎样避免此问题?
情况二:js文件缓存:
各个浏览器也是拼了命的提高性能,升级JS解析引擎,更好的处理浏览器的页面缓存,让用户的浏览体验更快,占用更小的PC资源。那么,问题就出现在JS和css缓存,甚至页面缓存上。至于浏览器对页面的缓存,我们一般通过在服务端发送页面的时候设置页面的生存期,一般几个小时就能缓解很大的服务器压力,并且,对浏览者来讲,本地页面晚更新几个小时可能问题也不大。但,问题是,如果页面发生了更新,但是该页面链接的JS和CSS文件却被浏览器缓存下来,只有待浏览器重启后才能被删除,甚至有些浏览器重启后也不主动删除JS和CSS的缓存文件。这样页面与JS和CSS文件就可能发生脱节了,从而出现某种异常现象,甚至页面崩溃。更坑爹的现象是,现在用户为了保存自己的工作(娱乐)状态,根本就长时间不关机,当然也不关闭浏览器。从而使得该问题变得更加严重。
清理网站缓存的几种方法
1.meta方法,在html里head区添加代码:
//不缓存
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">2.清理form表单的临时缓存
<body onLoad="javascript:document.yourFormName.reset()">其实form表单的缓存对于我们书写还是有帮助的,一般情况不建议清理,但是有时候为了安全问题等,需要清理一下!
3.jquery ajax清除浏览器缓存
方式一:
用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,如下:
$.ajax({
url: 'www.fly63.com',
dataType: 'json',
data: {},
beforeSend: function(xmlHttp) {
xmlHttp.setRequestHeader("If-Modified-Since", "0");
xmlHttp.setRequestHeader("Cache-Control", "no-cache");
},
success: function(response) {
//操作
}
async :false
});方法二:
直接用cache:false,
$.ajax({
url: 'www.fly63.com',
dataType: 'json',
data: {},
cache: false,
ifModified: true,
success: function(response) {
//操作
}
async :false
});4.URL文件缓存随机参数清理
方法一:
用随机数,随机数也是避免缓存的一种很不错的方法!URL 参数后加上 "?ran=" + Math.random(); //当然这里参数 ran可以任意取了
方法二:
用随机时间,和随机数一样。在 URL 参数后加上 "?timestamp=" + new Date().getTime();
方法三:
使用方式一或者二,是会导致浏览器每次都要去请求服务端的js文件。占用带宽,作为技术,能不能有种更好的办法呢?既能避免用户的浏览器每次去请求服务端获取js文件。又能在发布新的js代码后,能够使用最新的js文件?
在问号后面加版本号或者文件修改时间,现在很多网站都这么干。
<script type="text/javascript" src="/js/common.js?v=99" ></script>或者
<script type="text/javascript" src="js/common.js?t=20150622" ></script>本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!