Vue 部署后怎么强制客户端刷新获取最新的代码资源?

大体背景:目前后台管理系统是 标签页 形式;用户使用的时候会长期的保留几个正在使用的标签功能页;而且每一个都是keep-alive缓存的;切换的时候不会重新加载;导致的问题就是:如果用户就在A标签页进行操作;这个时候项目更新部署了新的代码;但是用户并没有刷新浏览器;所以他的页面依然是老的代码;就会出现不想要的结果

image.png

网上搜到的解决方法大体2类

  1. api请求拦截:在axios请求拦截器中走获取后端版本号的接口和当前项目内的版本号对比;如果不一致就给出提示;让用户手动刷新浏览器
  2. 在api请求的header中增加版本号字段;后端对携带的版本号和最新的版本号对比;不一致就告诉前端指定的code;前端作出提示(这个成本有点高;所有的接口都要加;不知道有没有网关这一说)

以上两种方式都需要后端的支持;想问问群里的朋友们;还有没有代价更小的方法做到此类事件?
或者大家遇到这样的情况都是这么处理的呢?

阅读 3.8k
1 个回答

我之前用过的一个方案:

  1. build 的时候,把版本号输出到一个文件里,比如 /version.txt
  2. 不断轮询这个文件,如发现版本升级,就提示用户刷新浏览器
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏