Wie kann man index.html dazu bringen, nicht zwischenzuspeichern, wenn sich der Inhalt der Website auf der AngularJS-Website ändert?
Lesezeit: 4 Minuten
Rongyan Xia
Normalerweise für .js und .css Datei werden wir während des Builds eine Version anhängen wie xx.js?v=123, und nach der Bereitstellung der Website können wir die neue Version von js und CSS abrufen. Aber ich sehe keinen Ort, an dem darüber gesprochen wird, wie man das macht index.html Datei-Upgrade, wenn die Website-Bereitstellung erfolgt. Und wir sehen im IE, dass der HTML-Inhalt geändert werden sollte, aber er verwendet immer noch den alten HTML-Inhalt.
Allerdings bin ich mir nicht sicher, ob das die beste Lösung ist?
Shashank Agrawal
Ja, das ist der richtige Weg. Sie müssen die einstellen Cache-Control -Header, um den Browsern mitzuteilen, dass sie für diese Anfrage keine Inhalte zwischenspeichern müssen.
(Pragma & Cache-Control ist ein und dasselbe, aber von der unterschiedlichen HTTP-Spezifikation. Siehe die Antwort hier: Unterschied zwischen Pragma- und Cache-Control-Headern?)
Siehe eine der zugehörigen Antworten hier: How to burst yeoman index.html cache
Wie wird die entscheidende Funktionalität des Zwischenspeicherns einer “Antwort” auf einen falsch konfigurierten Webserver unterbrochen?
– Rick O’Shea
10. Juni 2017 um 1:34 Uhr
@RickO’Shea Ich habe dich nicht verstanden? Können Sie bitte erklären, was völlig falsch ist? Der Autor bat darum, den Cache zu platzen index.html so antwortete ich entsprechend und wenn Sie hinzufügen möchten no-cache Header für PNG-Dateien, muss man den Server konfigurieren, zum Beispiel Apache oder Nginx. Ich weiß, dass dieser Header auch direkt über die Serverkonfiguration hinzugefügt werden kann, aber ich habe basierend auf der Frage geantwortet.
– Shashank Agrawal
10. Juni 2017 um 8:27 Uhr
@RickO’Shea Deaktiviert dies auch das Caching für js- und CSS-Dateien? Diese Dateien sind groß und müssen immer zwischengespeichert werden.
– rostamiani
12. Februar 2020 um 6:48 Uhr
Wird diese Lösung das Caching für die anderen Assets oder nur index.html unterbrechen?
Wie in den Kommentaren erwähnt, ist es wirklich die Serverkonfiguration, die Sie sich ansehen möchten, aber Sie haben Ihr Setup nicht erwähnt. Wir betreiben unsere AngularJS-Site mit einem .NET-Backend unter Verwendung von IIS.
Wir aktualisieren unsere Website regelmäßig und hatten in der Vergangenheit Probleme mit dem Caching von JS- und CSS-Ressourcen, aber wir haben es durch die folgenden Einstellungen gelöst:
Bauen
Wir verwenden gulp, um unsere AngularJS-Anwendung zu erstellen, und als Teil davon hängen wir eine Versionsnummer an die Abfragezeichenfolge unserer CSS- und Javascript-Dateien unserer Hauptanwendung an, die sich häufig ändern. Zum Beispiel:
In der root web.config geben wir an, dass wir die index.html nicht zwischenspeichern wollen, indem wir die setzen cache-control, Pragma und Expires Anforderungsheader sowie das maximale Alter auf 0 setzen.
Expires und Pragma ist veraltet und wird für HTTP/1.0 verwendet. Seit vielen Jahren wird es nicht mehr benötigt.
– hastrb
3. März 2021 um 5:06 Uhr
Sie können IIS in den erweiterten Einstellungen der spezifischen Sites angeben, dass das Vorabladen nicht aktiviert ist. Die Leistung Ihrer Website wird jedoch darunter leiden. Überprüfen Sie auch, ob der Anwendungspool für die jeweilige Website über einen integrierten Pipelinemodus und eine .NET CLR-Version verfügt.
12992100cookie-checkWie kann man index.html dazu bringen, nicht zwischenzuspeichern, wenn sich der Inhalt der Website auf der AngularJS-Website ändert?yes