研发效能 Web 项目发版本用户都得清缓存才能正常用

张狂天 · 2022年02月25日 · 最后由 Thirty-Thirty 回复于 2022年03月02日 · 1096 次阅读

有啥办法可以让用户不用清缓存,或者用户操作省事点的方法吗?
我想最多就是在页面加一个清缓存的按钮帮助用户清缓存,
再进一步的话就是给这个按钮加个 tips 提示用户 “出问题时请先点此按钮”。
其他没啥好办法了,问下大家对于 “版本更新后用户得清缓存才能用” 这个问题有啥好的方法?

共收到 5 条回复 时间 点赞

我理解的一般静态资源在发布的时候应该是要带版本的,一般来说就是在访问的时候系统会返回一个最新的时间戳,如果时间戳比缓存的要晚,表示有新的版本发布了,需要重新加载;如果时间戳没变化,就表示当前版本已经是最新了,直接用缓存的就行,减少资源重复请求。

一般静态文件的获取途径为:本地缓存 -> 没有则发起请求 -> 网络代理缓存 -> 不使用缓存则获取服务器文件
但部分单页应用的话,它是通过文件 hash 来做的,所以 index.html 入口文件一般不缓存

生成前端资源的时候文件名后方加个随机串

想确认下,发版本都得清缓存才能用,"才能用" 指的是才能用新版本,还是才能正常使用?

如果是前者,前面已经提到了,webpack 会给打包出来的资源文件加个 hash 值,浏览器缓存一般是用文件名作为 key 的,文件名变了就不会用缓存而是去服务端拉取。至于 index 则通过加一个告知浏览器不进行缓存的 header 来完成。
网上用 前端 缓存 关键字,搜索到一篇对这个说得比较详细的文章,可以看看:浏览器缓存带来的前端项目更新问题及解决方法

如果是后者,这个就是向下兼容问题了,可以具体说下情况。

如果行为不符合产品经理的预期,提 bug 即可

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册