一、关闭nginx的缓存
server {
listen 80;
location ~ .*.(html)$ { // 对html文件限制缓存
add_header Cache-Control no-store; // 不缓存
// 或者用add_header Cache-Control no-cache;替代上面那一句,协商缓存
add_header Pragma no-cache;
}
}
#实际代码
location ~ .*.(htm|html|js|png|jpg|ico)$ {
add_header Cache-Control no-store;
add_header Pragma no-cache;
}
(1)Cache-Control: no-cache和Cache-Control: no-store区别
no-cache:文件未发生改变时调用缓存
no-store:不管什么情况都传输整个文件大小
(2)Pragma: no-cache:和Cache-Control: no-cache区别
Pragma: no-cache跟Cache-Control: no-cache相同
注:
Pragma: no-cache 支持http 1.0 和http 1.1
Cache-Control: no-cache只支持http 1.1
二、使用hash解决vue缓存
原因:vue每次打包的bundle.js文件一样,浏览器不更新
解决方法:使用hash 每次生成不用的文件名
#vue-cli2
#webpack.prod.conf.js 下修改output
const Timestamp = new Date().getTime();
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].'+Timestamp+'js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].'+Timestamp+'js')
}
#vue-cli3
#vue.config.js 下修改/添加output
const Timestamp = new Date().getTime();
configureWebpack: {
output: {
filename: 'js/[name].'+Timestamp+'.js',
chunkFilename: 'js/[name].'+Timestamp+'.js'
}
}
在webpack中有一个hash的东西:
filename:"bundle.[hash].js", 这样定,每一次生成的打包后文件名就不一样了