Vue项目打包部署后浏览器自动清除缓存问题的解决方法

 更新时间:2024年12月11日 10:05:20   作者:web13508588635  
这篇文章主要介绍了vue打包部署后 浏览器缓存问题,导致控制台报错ChunkLoadError: Loading chunk failed的解决方案,文中有相关的图文和代码供大家参考,具有一定的参考价值,需要的朋友可以参考下

一、报错如下:

每次build打包部署到服务器上时,偶尔会出现前端资源文件不能及时更新到最新,浏览器存在缓存问题,这时在当前页面进行按钮点击等事件处理时,控制台报错chunk load error,如下显示:

原因:通过查看当前sources里的文件,可以发现:控制台报错提示中所请求的js文件哈希值跟sources缓存的文件哈希值并不一样,说明 当前页面请求了缓存,然而由于资源文件被更新 导致找不到 出现404的情况。

直接解决办法:清除浏览器缓存。(但是每次部署 都要让用户重新清一次缓存不是很友好)下面通过其他方式解决这个问题。

二、解决:

1、在index.html入口文件处设置meta标签,清除页面缓存。

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="expires" content="0">

2、vue.config.js 配置js、css打包配置,在css、js打包文件添加版本号时间戳,区别版本

const path = require('path')
const timeStamp= new Date().getTime()
const isPro = process.env.NODE_ENV === 'production'
module.exports = {
  configureWebpack: {
    output: {
      filename: `js/[name].js?v=${timeStamp}`,
      chunkFilename: `js/[name].js?v=${timeStamp}`,
    },
  },
 css: {
    // 输出重构 打包编译后的css文件名称,添加时间戳
    extract: {
      filename: `css/[name].${timeStamp}.css`,
      chunkFilename: `css/[name].${timeStamp}.css`,
    },
  }
}

这样每次打包出来的js文件都不一样,也就解决了浏览器的缓存问题。

Tips

filename: 指列在 entry(入口) 中,打包后输出的文件的名称
chunkFilename: 指未列在 entry 中,却又需要被打包出来的文件的名称(懒加载的文件)

三.打包测试

发现 JS 后参数带上我设置的时间戳啦,测试成功。

清除浏览器 localStorage 缓存

1、更新package.json中的 version 值,每次打包往上递增
2、main.js中,根据 version 判断是否进行缓存清理

const VUE_APP_VERSION = require('../package.json').version
const vers = window.localStorage.getItem('appVersion')
if(VUE_APP_VERSION != vers){
  localStorage.clear()
  window.localStorage.setItem('appVersion', VUE_APP_VERSION)
  location.reload()
}

Tips

有时版本不一样,可以找webpack.prod.conf文件进行修改噢~

到此这篇关于Vue项目打包部署后浏览器自动清除缓存问题的解决方法的文章就介绍到这了,更多相关Vue浏览器自动清除缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    这篇文章主要介绍了Vue3.x的版本中build后dist文件中出现legacy的js文件问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue + el-tree 实现插入节点自定义名称数据的代码

    vue + el-tree 实现插入节点自定义名称数据的代码

    这篇文章主要介绍了vue + el-tree 实现插入节点自定义名称数据的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • 基于vue 动态菜单 刷新空白问题的解决

    基于vue 动态菜单 刷新空白问题的解决

    这篇文章主要介绍了基于vue 动态菜单 刷新空白问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue3+TypeScript封装axios并进行请求调用的实现

    Vue3+TypeScript封装axios并进行请求调用的实现

    这篇文章主要介绍了Vue3+TypeScript封装axios并进行请求调用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 源码剖析Vue3中如何进行错误处理

    源码剖析Vue3中如何进行错误处理

    错误处理是框架设计的核心要素之一,框架的错误处理好坏,直接决定用户应用程序的健壮性以及用户开发应用时处理错误的心智负担,本文将从源码入手,剖析一下Vue3中是如何进行错误处理的,需要的可以参考下
    2024-01-01
  • Vue2.4+新增属性.sync、$attrs、$listeners的具体使用

    Vue2.4+新增属性.sync、$attrs、$listeners的具体使用

    这篇文章主要介绍了Vue2.4+新增属性.sync、$attrs、$listeners的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vue实现手机端省市区区域选择

    vue实现手机端省市区区域选择

    这篇文章主要为大家详细介绍了vue实现手机端省市区区域选择,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 基于ElementUI实现v-tooltip指令的示例代码

    基于ElementUI实现v-tooltip指令的示例代码

    文本溢出隐藏并使用tooltip 提示的需求,相信在平时的开发中会经常遇到,常规做法一般是使用 elementui 的 el-tooltip 组件,在每次组件更新的时候去获取元素的宽度/高度判断是否被隐藏,本文给大家介绍了基于ElementUI实现v-tooltip指令,需要的朋友可以参考下
    2024-09-09
  • 使用Vue自定义数字键盘组件(体验度极好)

    使用Vue自定义数字键盘组件(体验度极好)

    最近做 Vue 开发,因为有不少页面涉及到金额输入,产品老是觉得用原生的 input 进行金额输入的话 体验很不好,于是自己动手写了一个使用Vue自定义数字键盘组件,具体实现代码大家参考下本文
    2017-12-12
  • Vue响应式原理Observer、Dep、Watcher理解

    Vue响应式原理Observer、Dep、Watcher理解

    这篇文章主要介绍了Vue响应式原理-理解Observer、Dep、Watcher,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06

最新评论