前端文件的版本号(刷新缓存)

249 阅读1分钟

Math.random()

**背景
**     在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、js等,而不必从你的服务器读取,这样在一定程度上加快了网站的打开速度,又可以节约一下你的服务器流量。

**问题
**     现在问题来了,.htaccess设置的css、js缓存都有一个过期时间,如果在访客的浏览器中已经缓存了css、js,在这些css、js缓存未过期之前,浏览器只会从缓存中读取css和js,如果你在服务器上修改了css和js,那么这些更改在回头客的浏览器中是不会有变化的,除非回头客按了Ctrl + F5刷新了你的网站页面或者手动清空了浏览器的缓存。一个网站的访客成千上万,回头客也会有不少,你不可能在更新css后让每个访客都刷新一下缓存吧,那么这个问题你会怎么处理呢?

通过下面的方式,动态的为js添加版本号,去除缓存

  <script type="text/javascript">
    document.write("<link rel='stylesheet' href='css/index.css?v=" + Math.random() + "'>");
  </script>
  <script type="text/javascript">
    document.write("<s" + "cript type='text/javascript' src='js/index.js?v=" + Math.random() + "'></s" + "cript>");
  </script>