当前位置: 首页 > Web前端 > HTML

惊讶——vue-cli5项目中的一个缓存bug分析关于

时间:2023-03-29 12:34:23 HTML

现象描述新版本代码产品:“Firefox不更新”我:“多刷新几次”产品:“没用”我:“强制”refresh”product:“不错,不过你之前不是写了版本检查,能自动更新吗?怎么这次不行,得手动强制刷新,普通刷新不行”心:“女人是麻烦”于是我查看了复现环境,发现HTML代码竟然这么长,令人震惊的一幕。我的心:绝对不可能,绝对不可能,啊,我的世界观崩塌了。要么都是webpakc打包的新版代码,要么缓存的都是旧版代码。为什么会出现一半html是新版,另一半是旧版代码的情况???马桶上的思考过程琢磨了半天,毫无头绪。首先,有一个新版本的控制代码。html肯定是新的,但是为什么会有旧版本的代码呢?仔细查看了本地打包的代码,终于找到了端倪。因为vue有一个按钮每个路由需要加载的cssjs是动态导入的,现在导入的是旧版本。所以这个文件应该是旧版本,注意红框中的文件,去缓存,但是打包出来的还是新版本,但是因为名字没有Hash,所以获取缓存文件为确认。那么问题来了,为什么vue-cli4没问题。vue-cli-serviceinspect>output.js可以找到//vue-cli5output:{filename:'js/[name].js',chunkFilename:'js/[name].js'}//vue-cli4output:{filename:'js/[name].[contenthash:8].js',}所以vue-cli5默认打包时没有hash,会造成缓存问题。Firefox的缓存问题尤为严重。必须强制清除缓存。所以解决方案1.window.reload==>window.reload(true)2.在vue.config.js中添加configureWebpack:{output:{filename:'js/[name].[contenthash:8].js',}}后续,fix版完美解决问题产品:太棒了!