1.更新资源,我们总是需要改变资源的url. 这本身没有什么问题
<script src=http://www.a.com/a.js?v=20121212></script>
其中 20121212 部分我们是作为版本号来存在的.事件戳
还有一种做法,并不是把日期作为版本号,比如拿文件的内容,用某种hash算法,获得一个字串,作为版本号.这样可以防止竞争对手枚举版本号方式变相攻击,导致缓存代理们,缓存错误的内容。
2.但假如我们没有办法修改url的资源就变的束手无策了. 这样的场景经常发生在第三方脚本身上. 在得知 xxx.js 已经有了新版本.需要客户端重新去服务器获取新版本时.立刻实现更新. 这个xxx.js.而且url并不发生变化.
解决方案:
(1). 减少脚本的过期时间. 比如10分钟的过期时间(baidu联盟的脚本文件的过期时间是两个小时)
(2). 使用一个永不缓存的小加载器脚本.加载后面的主脚本. 通过修改加载器脚本中 主脚本的url来实现更新.