一轩褐、hash(所有文件哈希值相同,只要改變內(nèi)容跟之前的不一致玖详,所有哈希值都改變把介,沒有做到緩存意義)
hash是跟整個(gè)項(xiàng)目的構(gòu)建相關(guān),構(gòu)建生成的文件hash值都是一樣的蟋座,所以hash計(jì)算是跟整個(gè)項(xiàng)目的構(gòu)建相關(guān)拗踢,同一次構(gòu)建過程中生成的hash都是一樣的,只要項(xiàng)目里有文件更改向臀,整個(gè)項(xiàng)目構(gòu)建的hash值都會(huì)更改巢墅。
如果出口是hash,那么一旦針對(duì)項(xiàng)目中任何一個(gè)文件的修改,都會(huì)構(gòu)建整個(gè)項(xiàng)目砂缩,重新獲取hash值作谚,緩存的目的將失效。
二庵芭、chunkhash(同一個(gè)模塊妹懒,就算將js和css分離,其哈希值也是相同的双吆,修改一處眨唬,js和css哈希值都會(huì)變,同hash好乐,沒有做到緩存意義)
它根據(jù)不同的入口文件(Entry)進(jìn)行依賴文件解析匾竿、構(gòu)建對(duì)應(yīng)的chunk,生成對(duì)應(yīng)的hash值蔚万。我們?cè)谏a(chǎn)環(huán)境里把一些公共庫(kù)和程序入口文件區(qū)分開岭妖,單獨(dú)打包構(gòu)建,接著我們采用chunkhash的方式生成hash值反璃,那么只要我們不改動(dòng)公共庫(kù)的代碼昵慌,就可以保證其hash值不會(huì)受影響。
由于采用chunkhash淮蜈,所以項(xiàng)目主入口文件main.js及其對(duì)應(yīng)的依賴文件main.css由于被打包在同一個(gè)模塊斋攀,所以共用相同的chunkhash。
這樣就會(huì)有個(gè)問題梧田,只要對(duì)應(yīng)css或則js改變淳蔼,與其關(guān)聯(lián)的文件hash值也會(huì)改變,但其內(nèi)容并沒有改變裁眯,所以沒有達(dá)到緩存意義鹉梨。
三、contenthash(只要文件內(nèi)容不一樣穿稳,產(chǎn)生的哈希值就不一樣)
contenthash表示由文件內(nèi)容產(chǎn)生的hash值俯画,內(nèi)容不同產(chǎn)生的contenthash值也不一樣。在項(xiàng)目中司草,通常做法是把項(xiàng)目中css都抽離出對(duì)應(yīng)的css文件來加以引用艰垂。
所以css文件最好使用contenthash。