防止JS文件被浏览器缓存的几种实现方案

作者:微光时间:2026-10-24 19:22:49浏览:571

本文介绍了防止JavaScript文件被浏览器缓存的多种方法。包括通过动态添加时间戳参数强制浏览器重新下载JS文件,以及在HTML头部或服务器端(如IIS、ASP.NET)设置No-Cache和Expires头信息。文章还探讨了客户端与服务端缓存控制的差异,指出程序控制缓存是解决大众用户缓存问题的有效手段。

通过动态参数防止JS缓存

具体实现方式如下所示。


1、在你引用JS文件的地方加上,如下:

代码示例如下:

 
//09年08月14日修改
var now=new Date();
var number = now.getYear().toString()+now.getMonth().toString()+now.getDate().toString()+now.getHours().toString()+now.getMinutes().toString()+now.getSeconds().toString();
document.write("\<script language=\"javascript\" type=\"text/javascript\" src=\"js/YearReportLuRu.js?"+number+"\"><\/script\>");
//alert("\<script language=\"javascript\" type=\"text/javascript\" src=\"js/YearReportLuRu.js?"+number+"\"><\/script\>");//测试

这种形式类似于:js/YearReportLuRu.js?20100408154456。其原理是让浏览器误认为每次引用的JS文件URL都不同,从而避免使用缓存。需要注意的是,我们的YearReportLuRu.js文件本身并不处理后面的动态参数。



2、就是在客户端页面文件头加上:

HTML头部禁用缓存设置

代码示例如下:

 
<%--不进行缓存设置--%>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate" />
<meta http-equiv="expires" content="Wed,26 Feb 1997 08:21:57 GMT" />

服务器端缓存控制配置

此外,也可以在服务器端进行如下配置:


代码示例如下:

 
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";

我在程序中应用过这种方法,但部分用户仍存在缓存现象,个人感觉并未彻底解决该问题。


IIS服务器缓存策略与总结

3、还有其他办法,在此汇总一下,我本人未使用过,仅是从网上搜集到的,具体如下:


需要在服务器上设置允许缓存,这样客户端才能根据客户端的设置来缓存一些静态文件(如:js、css、图片)。


在IIS里,可以在站点属性的“HTTP头”里设置“启用内容过期”,来控制客户端缓存的时间。(如下图)


这样HTTP返回的HTTP头是304,启用缓存可以大大提高用户体验,另外也建议启用http压缩,来优化网站。


通过动态参数防止JS缓存

此方法是设置在WEB发布服务器上。



总结:对于静态文件用IIS或其它的WEB SERVER都可以做到,缓存客户端是IE或其它客户端的机制问题.


大众用户还是不会没事清掉客户端的cache,所以我们可以利用程序来控制缓存问题。

作者最新文章