跳到主要内容

各种hash之间理解

  • hash、chunkhash、contenthash

hash​

  • 根据webpack所有模块生成的,有任何变化都需要重新生成,而且唯一
    • 所有模块共用一份hash,hash一变,缓存就失效了,这个肯定就有问题的
  • 比如只改了js代码,css没有发生变化,打包出来,js和css的hash都会发生变化,因此不推荐使用hash

chunkhash​

  • 根据chunk所有依赖生成的,只要chunk中的依赖发生变化就会重新生成
    • 从入口文件进行依赖解析,构建对应的chunk,生成对应的哈希值
  • 也会产生问题:比如异步加载的组件模块,如果你的应用程序中有异步加载的组件,而这些组件的内容在构建中并没有发生变化,但其依赖的模块发生了变化,这样就会导致 chunkhash 变化,从而导致浏览器重新下载文件,即使实际上组件的内容并没有改变

contenthash​

  • 文件内容来生成的哈希值,它与文件的内容直接相关。只有文件内容发生变化时,对应文件的 contenthash 才会改变, 推荐使用contenthash