[想法]为引用静态资源的url添加版本号,解决版本发布后的浏览器缓存有关问题

[想法]为引用静态资源的url添加版本号,解决版本发布后的浏览器缓存问题

       在日常的工作中,我们经常会遇到页面文件(html,jsp等)中引用的js,css,图片等被修改后,而浏览器依然缓存着老版本的文件,客户一时半会看不到修改后的效果,同时也给生产环境的版本发布带来了一些问题。

 

       通常的解决方法就是在资源后跟上随机的参数或者版本号,日期等,来刷新浏览器的缓存使其到服务器上重新下载这些文件,如淘宝:http://a.tbcdn.cn/p/fp/2010c/js/fp-direct-promo-min.js?t=20111210.js

 

 

       但是在日常的研发过程中,不可能给这些url逐个加上参数,这样太笨拙了。于是我有如下想法:

跟SVN等版本工具配合,给这些资源的url加上该资源的修订号,如

<script type="text/javascript" src="/script/function.js?version=182"></script>

 

 

     这样做有两点好处:

  1. 在代码文件提交之前,给代码中引用的资源添加版本号,无需人工手动添加,方便规范;
  2. 避免一刀切的方式,把所有引用的资源都每次都生成随机参数,对于某些没有更新的资源,没有必要强制浏览器重新请求服务器。

    实现思路:

          解析指定文件(如html,jsp)中的相关标签(link,script等),找到引用的资源url,使用svnkit获取资源对应的修订号并添加到资源url中作为参数。

  

    注:在资源url上添加参数并不能解决所有浏览器的缓存问题,毕竟不同的浏览器的缓存策略不同,但通常还是 比较好的解决方案. 相应的工具正在开发中,敬请期待...

         

 

1 楼 aNd1coder 2011-11-19  
楼主,你的工具进展如何呢?最近也一直在寻求这样一个工具,希望楼主分享下实现过程,谢谢!
2 楼 aNd1coder 2011-11-19  
and1coder#gmail.com 如果可以的话,邮件交流下:D