分享

js 给url添加时间戳 解决浏览器缓存

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

<link rel="stylesheet" type="text/css"   href="common.css?time=20060408" />每次更改了css文件就把参数time的值设为更改当日的日期,这样本地IE就会把它当作一个新的文件更新一次。

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

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

<link rel="stylesheet" type="text/css"   href="common.css?time=20060408.css" />然后就一切正常了...

大概IE在从缓存里读文件的时候还得对文件扩展名做一个判断,所以这么加一下它就认了。我自己对这个解释不甚满意,所以如果你有标准答案麻烦留个言

当然js也可以用这种方法<script language="JavaScript" src="/flash/duilian.js?time=New Date()"></script>




Timestamp
//解决浏览器缓存
function timestamp(url){
     //  var getTimestamp=Math.random();
       var getTimestamp=new Date().getTime();
      if(url.indexOf("?")>-1){
        url=url+"&timestamp="+getTimestamp
      }else{
        url=url+"?timestamp="+getTimestamp
      }
      return url;
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多