vue项目打包部署后,用浏览器访问,如果更新迭代后再次打包部署,浏览器访问的可能还是之前版本的vue页面,就是说浏览器后缓存的问题,清空缓存是可以决定问题,但是是否可以在代码层面解决问题呢?
不知道你这个问题是否已经解决, 如果还没有解决的话:那是vue的域更新是异步的,因为即当setter操作发生后,并不会立马更新,指令的更新操作会有延迟,当指令更新真正执行的时候,此时修改的属性属性已经设置,所以指令更新模板时得到的是新值。
对于Vue项目中浏览器缓存导致访问旧版本页面的问题,可以通过以下方式解决:
在Vue项目的构建配置文件(vue.config.js
或webpack.config.js
)中,可以通过为构建文件添加版本号的方式解决缓存问题。具体步骤如下:
[name].[chunkhash].js
。webpack-manifest-plugin
插件生成一个文件清单,清单中包含了构建后的文件名与实际引用的路径之间的映射关系。这样的话,每次构建时文件名会变化,浏览器会重新请求新的文件。
示例代码:
const ManifestPlugin = require('webpack-manifest-plugin');
module.exports = {
// ...
output: {
filename: '[name].[chunkhash].js',
// ...
},
plugins: [
new ManifestPlugin()
// ...
],
// ...
}
在HTML模板文件中,可以通过添加meta标签来控制浏览器缓存行为。可以设置http-equiv
属性为Cache-Control
,值为no-cache, no-store, must-revalidate
。这样每次访问页面时浏览器都会重新请求。
示例代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<!-- ... -->
</head>
<body>
<!-- ... -->
</body>
</html>
通过以上两种方式,可以在代码层面解决浏览器缓存导致访问旧版本页面的问题。
在资源路径后面添加时间戳如url?t=135466525