各种hash之间理解
- hash、chunkhash、contenthash
hash
- 根据
webpack所有模块生成的,有任何变化都需要重新生成,而且唯一- 所有模块共用一份hash,hash一变,缓存就失效了,这个肯定就有问题的
- 比如只改了js代码,css没有发生变化,打包出来,js和css的hash都会发生变化,因此不推荐使用hash
chunkhash
- 根据chunk所有依赖生成的,只要chunk中的依赖发生变化就会重新生成
- 从入口文件进行依赖解析,构建对应的chunk,生成对应的哈希值
- 也会产生问题:比如异步加载的组件模块,如果你的应用程序中有异步加载的组件,而这些组件的内容在构建中并没有发生变化,但其依赖的模块发生了变化,这样就会导致 chunkhash 变化,从而导致浏览器重新下载文件,即使实际上组件的内容并没有改变
contenthash
- 文件内容来生成的哈希值,它与文件的内容直接相关。只有文件内容发生变化时,对应文件的
contenthash才会改变, 推荐使用contenthash