首页 > 前端开发 > 加时间戳使js,css不缓存

发表评论 阅读评论 加时间戳使js,css不缓存

2010年8月5日

好多服务器端或CDN都会对CSS、JS和图片这些静态的内容设置缓存,到了IE这里又会在本地做一个缓存。所以当我们更新了CSS文件之后,常常会出现客户端没有更新,导致显示出现问题。之前我一直使用时间戳参数的方法来解决:

每次更改了css文件就把参数time的值设为更改当日的日期,这样本地IE就会把它当作一个新的文件更新一次。

但是在最近做的项目中发现一个比较奇怪的问题,服务器端做了gzip压缩,到客户端第一次解压的时候没问题,第二次访问的时候ie从cache里读文件就出问题了,只能读出前面大约一两千个字节。在两台win2000+ie6的机子上重现了这个问题,XP的还没有发现。

最终的解决方案是在时间戳参数后面再加上一个.css结尾,也就是这么写:

<link rel="stylesheet" type="text/css"   href="common.css?time=20100801.css" />

然后就一切正常了…

大概IE在从缓存里读文件的时候还得对文件扩展名做一个判断,所以这么加一下它就认了。

当然js也可以用这种方法

<script language="JavaScript" src="/flash/duilian.js?time=New Date()"></script>

分类: 前端开发 标签: , ,
  1. 菜鸟
    2011年10月10日15:37 | #1

    这么诡异。。
    好像是遇到有这个情况,不过比较少。。
    果然ie6是很淫荡的。。

  2. 2010年9月21日22:37 | #2

    LZ 参数怎么加啊?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

您也可以使用微博账号登陆