浏览器缓存(Catching)可以提升用户的浏览体验,降低服务器压力,但是缓存是不是百利而无一害的呢?
可以思考这样的场景:
用户首次访问下载了index.js到缓存中,在用户第二次访问同一页面之前,我们修改了index.js的源文件并且重新打包上线了index.js,如果此时用户的缓存中还存在之前留下的index.js,那么用户就会加载缓存中的index.js,而不是最新的修改后的index.js文件,如何来解决这个问题呢?
修改webpack.prod.js:
...
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname,'../dist')
}
...
在输出时,为每一个文件名添加contenthash值,当该文件发生改变时,该文件的文件名也会发生改变,这时候浏览器在请求该文件时,就不会命中缓存中过期的文件。