小言_互联网的博客

vue修改打包上传后浏览器缓存

459人阅读  评论(0)

vue缓存还是蛮大的,如果不刷新的话,而且这次刷新了下次重新进来还是会显示刷新之前的内容,是不是很坑啊。那么如何解决呢,其实很简单的
1、在项目根目录中找到bulid文件夹,找到webpack.prod.conf.js,也不要忘了找到webpack.testqa.conf.js,前面的是线上打包的处理文件,后面的是测试地址打包的处理文件,一并改了吧
2、修改文件

const version = new Date().getTime(); //1.定义变量, 这里使用的是时间戳 来区分 

//2.修改要生成的js和css文件的配置项,把刚刚声明的版本拼接进要生成的文件名中
output: {
    path: config.build.assetsRoot,
    filename: utils.assetsPath('js/[name].[chunkhash].' + version + '.js'),//清缓存,需要修改的地方
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].' + version + '.js')//清缓存,需要修改的地方
},

//3.html 页面加载脚本的时候给脚本后面加一个时间戳
new HtmlWebpackPlugin({
	  filename: config.build.index,
	  template: 'index.html',
	  inject: true,
	  hash: version,//清缓存,需要添加的地方
	  minify: {
	    removeComments: true,
	    collapseWhitespace: true,
	    removeAttributeQuotes: true
	    // more options:
	    // https://github.com/kangax/html-minifier#options-quick-reference
	  },
	  // necessary to consistently work with multiple chunks via CommonsChunkPlugin
	  chunksSortMode: 'dependency'
}),

到这里就完成了,如果不确定是否设置成功,那么npm run build(线上打包)一下,如果项目根目录下的dist下面的prod文件夹(线上打包生成的文件夹)下面的index.html里面的js带上?xxxxxxxxxx就说明成功了。
这里是以线上打包处理为例,测试地址打包处理方法是一样的。

另清除缓存还可以在html头添加不缓存的meta 标签,不过个人不太建议,因为这样浏览器就没有一点缓存了,用户每次进来都要重新加载所有数据,即使我们开发人员什么都没有修改,当然如果有需要的话,可以设置一下,附上代码

//在项目根目录中找到index.html,添加下面代码
<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta name="viewport" content="width=device-width,initial-scale=1.0">

转载:https://blog.csdn.net/qq_37291064/article/details/101698587
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场