Vue检测获取最新资源 解决浏览器缓存问题

Vue检测获取最新资源 解决浏览器缓存问题

1、在public文件夹下创建version.json文件

2、vue.config.js中,每次打包动态更新version.json内容

javascript 复制代码
let fs = require('fs');
const version = new Date().getTime();
let vJSON = require('./public/version.json') || {}
if ( process.env.NODE_ENV === "production" ) {
  vJSON = { 'version': version + '' }
  fs.writeFile('./public/version.json', JSON.stringify(vJSON), () => {
    console.log('新版本号生成成功');
  });
}

3、App.vue中使用定时器去检测版本号和本地是否有差异

javascript 复制代码
timer: null // 定时器实例

this.getLatestResources(true)
// 每半小时监测一次是否有更新
this.timer = setInterval(() => {
  this.getLatestResources()
}, 30 * 60 * 1000)

// 获取最新资源
getLatestResources(b = false) {
  this.$axios.get("/xxxxxxx/version.json",{params:{data: new Date().getTime()}}).then(res => {
    let lastVersion = res.data.version
    let storageVersion = localStorage.getItem("version")
    if (!storageVersion) {
      localStorage.setItem("version", lastVersion)
    } else {
      if(storageVersion != lastVersion){
        localStorage.removeItem("version")
        this.timer && clearInterval(this.timer)
        !b && this.$Modal.info({
          title: "提示",
          content: '检测到系统有更新,请刷新浏览器后使用!',
          onOk: () => {
            this.$router.go(0)
          }
        });
        b && this.$router.go(0)
      }
    }
  })
}
相关推荐
l***775213 小时前
Vue项目中 安装及使用Sass(scss)
vue.js·sass·scss
木易 士心13 小时前
Error: Module ‘@npmcli/config’ not found — 如何解决?
javascript·npm
fruge14 小时前
Vue3 实战避坑:10 个 Composition API 高频错误及修复方案
前端·javascript·vue.js
eason_fan14 小时前
什么是模块联邦?(Module Federation)
前端·javascript·前端工程化
J总裁的小芒果14 小时前
el-table 假数据合并
javascript·vue.js·elementui
W***D45514 小时前
SpringBoot + vue 管理系统
vue.js·spring boot·后端
VX:Fegn089514 小时前
计算机毕业设计|基于springboot + vue毕业设计选题管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
VX:Fegn089514 小时前
计算机毕设|基springboot+Vue的校园打印系统设计与实现
java·前端·javascript·vue.js·spring boot·后端·课程设计
u***451614 小时前
数据库Redis数据库
数据库·redis·缓存
阿道夫小狮子15 小时前
Android 反射
android·前端·javascript