2017-07-07 75 views
1

我正在使用webpack將我的文件綁定到兩個文件:app.js和lib.js,併爲每個通過瀏覽器下載的文件創建並追加獨特的chunkhash。這兩個文件都在同一個構建輸出中構建在一起。它應該是這樣的:WebPack:更改模塊號碼不會改變chunkhash

lib.747c2ee515b25d871bd0.js 
app.e6a0b36a5bb2bff41393.js 

我對這些文件的緩存如下設置:

Cache-Control:private, max-age=31536000 

這意味着,這些文件將被緩存的一年,當一個新的文件到達。這對每個文件獨立工作。

由於我們的應用程序更接近發佈,因此app中的更多更改比lib更多。

問題:我面臨的問題是,在新版本中,lib的內容未更改,但模塊ID已更改。這會導致模塊ID改變,但chunkhash不會改變;導致下載app但不是lib導致應用程序崩潰。在Ctrl + F5上按預期再次開始工作。

問題:是否將更改後的模塊ID視爲chunkash的一部分?我該如何解決這個問題?是否可以通過WebPack將自動增量顯式版本號添加到文件名?

任何幫助將不勝感激。

回答

1

我解決這個問題的方法是在我的文件名中添加一個數字(即Date.now()),如下所示。

filename: `[name].${Date.now().valueOf()}.[chunkhash].js` 

這對於可預見的時間非常可靠地工作。這是一個諒解,Date.now().valueOf()返回的值是1970年1月1日午夜以來的毫秒數。此外,我想在這裏實現的是自動生成的值和與之前不同的值。

我用這種方法看到的唯一缺點是:對於每個版本,這會強制刷新所有捆綁包。然而,考慮到我們在前兩次發佈後將會有非常低的產品推出頻率,這並不是什麼大問題。