• vue项目版本更新后文件存在缓存问题解决方案(vue-cli2.0&vue-cli3.0)


    一、vue2

    1.配置webpack.prod.conf.js 

    //设置output加t=[chunkhash:8]相当于加时间戳,用于清缓存
    output: {
        path: config.build.assetsRoot,
        filename: utils.assetsPath('js/[name].[chunkhash].js?t=[chunkhash:8]'),
        chunkFilename: utils.assetsPath('js/[id].[chunkhash].js?t=[chunkhash:8]')
      },
    

    2.在static静态目录下新建version.json每次发版更改里面的版本号 

    {
        "version": "0.0.1"
    }
    

    3.在src中新建 libs/versionUpdate.js文件

    import axios from 'axios'
    
    const isNewVersion = () => {
      let url = `//${window.location.host}/static/version.json?t=${new Date().getTime()}`;
      axios.get(url).then(res => {
        if (res.status === 200) {
          let vueVersion = res.data.version;
          let localVueVersion = localStorage.getItem('vueVersion');
          if (localVueVersion && localVueVersion != vueVersion) {
            localStorage.setItem('vueVersion', vueVersion);
            window.location.reload();
            return;
          } else {
            localStorage.setItem('vueVersion', vueVersion);
          }
        }
      });
    }
    
    export default {
      isNewVersion
    }
    

    4.全局路由拦截中写,只要每次版本号不同就重新加载页面配合第一步就可以清楚浏览器缓存

    import versionTood from '@/libs/versionUpdate'
    
    router.beforeEach(( to, from, next ) => {
      //判断当前代码版本是否与服务器中代码版本一致,如不一致则刷新页面获取最新
      versionTood.isNewVersion();
    

      

    二、vue3

    1.在vue.config.js中配置output

    const Timestamp = new Date().getTime();
     
    configureWebpack: {
        output: {
          filename: `js/[name].${Timestamp}.js`, // 每次构建打包时给文件名加上时间戳,确保每次版本更新的文件名不一样
          chunkFilename: `js/[name].${Timestamp}.js`
        }
    }

    2.在public目录下新建version.json每次发版更改里面的版本号

    {
        "version": "0.0.1"
    }
    

    3.在src中新建 libs/versionUpdate.js文件

    import axios from 'axios'
    
    const isNewVersion = () => {
      let url = `//${window.location.host}/static/version.json?t=${new Date().getTime()}`;
      axios.get(url).then(res => {
        if (res.status === 200) {
          let vueVersion = res.data.version;
          let localVueVersion = localStorage.getItem('vueVersion');
          if (localVueVersion && localVueVersion != vueVersion) {
            localStorage.setItem('vueVersion', vueVersion);
            window.location.reload();
            return;
          } else {
            localStorage.setItem('vueVersion', vueVersion);
          }
        }
      });
    }
    
    export default {
      isNewVersion
    }
    

    4.全局路由拦截中写,只要每次版本号不同就重新加载页面配合第一步就可以清楚浏览器缓存

    import versionTood from '@/libs/versionUpdate'
    
    router.beforeEach(( to, from, next ) => {
      //判断当前代码版本是否与服务器中代码版本一致,如不一致则刷新页面获取最新
      versionTood.isNewVersion();
    

      

  • 相关阅读:
    HDU 2896 病毒侵袭 AC自动机
    AC自动机
    BZOJ2337: [HNOI2011]XOR和路径 期望概率dp 高斯
    BZOJ4008. [HNOI2015]亚瑟王 期望概率dp
    BZOJ 2707: [SDOI2012]走迷宫 拓扑+高斯消元+期望概率dp+Tarjan
    CodeForces743E. Vladik and cards 二分+状压dp
    BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元
    BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp
    CodeForces 167B
    [HEOI2017]分手是祝愿 期望概率dp 差分
  • 原文地址:https://www.cnblogs.com/konglingxi/p/14348940.html
Copyright © 2020-2023  润新知