日期:2014-05-16  浏览次数:20305 次

新版本发布缓存问题
每次新版本发布后,都会有用户抱怨没看到更新的内容,看到的界面还是旧的,每次我都叫他们ctrl+F5,次数多了我就就想有没有好的办法解决,大家可有思路。

有人会说,页面通过设置<meta>标签,这是一个办法,可目前所有页面生成不是全部都通过唯一的一个入口渲染生成,如果是,我当然直接在入口里加上<meta>标签即可,甚至做成配置化,变成改改参数就可以实现发布后让所有用户的浏览器强制刷新缓存。

我没办法每次发布时都通过查找所有要修改的页面加上<meta>标签,然后过一段时间后就去掉。

另外,界面比较偏向于胖客户端,js的更新如何实现强制刷新?

我想到一个在url后面加后缀的方法。

比方:http://localhost/controllers/method
当用户访问这个url时,自动变成
http://localhost/controllers/method?new
这样会不会强制浏览器更新。
或者还有别的思路?

------解决方案--------------------
页面更改无非是CSS、JS、图片等静态文件发生更改,楼主只需在这些文件后面加版本号就行。
两种方法:
1:在链接后面加随机数,UUID、毫秒数都可以的,但是这样每次请求都会重新加载,即使工程没有发生任何更改的情况下。个人不推荐。
2:你可以定义一个常量用来保存你的版本号,只有在CSS、JS等静态文件有修改时更新这个版本号…例如:
<script type="text/javascript" src="**.js?v=<%=Constants.JS_RES_VERSION%>"></script>

个人经验,楼主不妨试试