caching Problem mit der web-Anwendung entwickelt, mit reactjs & webpack
Arbeite ich an einer web-Anwendung entwickelt, mit reactjs und webpack. Nach jedem deployment, müssen wir uns Fragen, Benutzern das löschen des browser-cache und starten Ihren Browser. Ich denke, dass die javascript-bundle-Datei und css-Datei immer zwischengespeichert, die auf Benutzer-browser.
Wie können wir die Kraft der browser nicht Cachen, diese Dateien oder laden Sie die neuesten Dateien vom server.
<html>
<head>
<meta charset="utf-8">
<title>My App</title>
<link rel="stylesheet" href="styles.css" media="screen" charset="utf-8">
</head>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie html-webpack-plugin
Failed to load resource: the server responded with a status of 404 (Not found)
für die Dateibundle.js?1c03629db68f03ac936e
& ähnliche Fehlermeldung kommtstyles.css?1c03629db68f03ac936e
- Datei. Ich installierte das npm-Paket und einfache fügte der code angezeigt, die Sie in webapck config-Datei. nach dem Aufbau und der Bereitstellung ich bin immer Fehler. wenn ich die Anwendung lokal bekomme ich folgenden Fehlerncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element.
HtmlWebpackPlugin
ist, verweisen auf die Dateien korrekt. Ich weiß nicht, wie du bist-Projekt eingerichtet ist, so könnte es denken, Ihre distributions-Verzeichnis-Struktur anders ist, als es ist.bundle.js?v=1c03629db68f03ac936e
sein kommen alsbundle.js?1c03629db68f03ac936e
. diekey
fehlt. Habe vermisse ich eine Konfigurations-option.sollten Sie verwenden html-webpack-plugin mit einer template-html-und put-hash-Konfiguration im output. So Ihr webpack config wie folgt Aussehen:
Und Ihre index.html wird so etwas wie dieses:
Den HTML-webpack plugin wird automatisch mit einfügen der überarbeiteten Skript in der index.html in Ihrem bundle-Ordner. Hoffe, das hilft. Für die Zwischenspeicherung zu beheben, können Sie sich an https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching wo der Versionierung und der response-header server-Konfigurationen erwähnt, die für wirksame caching-Lösungen.
Gibt es einen einfachen Weg um dieses problem zu vermeiden, ohne irgendwelche extra Sachen. Verwenden webpack s built-in-hashing-Fähigkeit.
Lesen Sie über das hinzufügen von hash zu deinem Bündel hier. Während der Titel dieser "Langzeit-caching" es ist nur wahr im Falle, wenn Sie Ihre Dateien nicht ändern. Aber wenn Sie erstellen Sie Ihr bundle Sie erhalten neue, einzigartige hash, also browser würde denken, es ist die neue Datei und laden Sie es.
filename: '[hash].bundle.js',
in meinem webpack.config-Datei. das erzeugt eine Datei wie diese3d161aa1fedaca1ca95b.bundle
. Nun, wie aktualisiere ich meine index.html Datei, die ist noch darunter bundle.js Datei wie<script src="bundle.js"></script>
. Der Artikel sagt auchNote that you need to reference the entry chunk with its hash in your HTML. You may want to extract the hash or the filename from the stats.
Bin ich hier etwas fehlt ?assets-webpack-plugin
Sie sagenThis plug-in outputs a json file with the paths of the generated assets so you can find them from somewhere else.
aber ich sehe nicht ein Beispiel, das erläutert, wie Sie sind die Aktualisierung der Referenz-Datei-Namen inindex.html