Webpack-Langzeit-Caching

8

Szenario

Ich versuche, mit webpack meine Lieferantenskripte getrennt von meinen Anwendungsskripten zu bündeln.

Versuch 1

index.js

%Vor%

webpack.config.js

%Vor%

Ergebnisse

%Vor%

Wenn ich jetzt index.js

ändere

index.js

%Vor%

Ergebnisse

%Vor%

Beide Hashes ändern sich, obwohl ich nur die Indexdatei aktualisiert habe.

Der Unterschied zwischen den beiden Herstellerdateien ist

vendor.72c95e21a8d7096d53bc.js

script.src = __webpack_require__.p + "" + chunkId + "." + ({"0":"app"}[chunkId]||chunkId) + "." + {"0":"3437c5da57e0c6671675"}[chunkId] + ".js";

vendor.0e76f9c86cbe02606265.js

script.src = __webpack_require__.p + "" + chunkId + "." + ({"0":"app"}[chunkId]||chunkId) + "." + {"0":"c724350371b50a9afeb2"}[chunkId] + ".js";

Versuch 2

Nach einigen Nachforschungen fand ich den folgenden Artikel, der erklärt, dass Webpack ein Chuck-Manifest erzeugt, das die Chunk-Identifikatoren enthält, die im Eintragsblock platziert sind. Dies erklärt das obige Diff. Die Lösung besteht darin, das Chuck Manifest in eine separate Datei zu extrahieren.

Ссылка

index.js

%Vor%

webpack.config.js

%Vor%

Ergebnisse

%Vor%

Wenn ich jetzt index.js

ändere

index.js

%Vor%

Ergebnisse

%Vor%

Noch einmal ändern sich beide Hashes, obwohl ich nur die Indexdatei aktualisiert habe.

Diesmal gibt es jedoch keine Unterschiede zwischen den beiden Herstellerdateien

Fragen

Gibt es einen Grund, warum das obige Szenario nicht funktioniert, oder gehe ich dieses Problem grundsätzlich falsch an?

Gibt es einen einfacheren Weg mit Webpack, um das zu erreichen, was ich versuche zu tun, denn selbst wenn ich den obigen Schritt zum Laufen bringe, muss ich das Manifest lesen und es dann in meine index.html-Seite einfügen?

    
kimsagro 08.09.2015, 02:33
quelle

2 Antworten

1

Es scheint ein Problem mit der neuesten Webpack-Version zu sein. Bitte lesen Sie das Thema Ссылка

So können Sie sich jetzt nicht auf [chunkhash] verlassen, einfachste Lösung ist es, einen benutzerdefinierten Hash zu verwenden, etwa <script src="vendor.js?v=001"> , und jedes Mal beim Backend zu ändern, wenn Sie freigeben.

    
arturkin 10.09.2015 11:24
quelle
0

Probieren Sie Ссылка aus, das scheint gut zu funktionieren.

erstes Gebäude js/app-379075f0ea0b0e0148f3.js 2.19 kB 0 [emitted] app js/react-da22e98119ee46232ff7.js 747 kB 1 [emitted] react

Rebuild, nur App geändert js/app-fc7ca0df6dfcf7ca77f7.js 2.21 kB 0 [emitted] app js/react-da22e98119ee46232ff7.js 747 kB 1 [emitted] react

    
x'ES 06.11.2016 16:59
quelle

Tags und Links