一、关闭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",  这样定,每一次生成的打包后文件名就不一样了