开发Vue单页面应用SPA项目的时候发现问题,如果用户已经打开网页,后续的访问都只会请求接口,不会再刷新页面。这样导致用户没有获取到我们线上新的代码。
解决思路有很多
- 直接请求
index.html
检测script文件hash值,这种方式不需要增加额外的文件 - head检查
index.html
的更新时间etag
值,需要服务端开启缓存 - 可以每次代码打包的时候生成一个
版本号
文件version.json
,程序检测到有新的版本号就提示用户刷新页面
还有一个问题是检测时机
- 定时轮询检测
- 适当的时机触发,比如用户切换路由
示例
$ echo "{\"version\": \"$(date +%s)\"}" > version.json $ cat version.json {"version": "1673926634"}
参考