Erzwingt ein IIS-Reset das erneute Senden zwischengespeicherter Elemente?


10

Ich versuche, eine Strategie für den Umgang mit zwischengespeicherten Javascript-Dateien, CSS, Bildern usw. zu entwickeln, wenn wir ein Update für unsere Website veröffentlichen. Bevor ich mit der Implementierung von Versionsnummern für die Javascript-Dateien beginne, habe ich mich gefragt, ob ein IIS-Reset nach jeder Version dazu führen würde, dass zwischengespeicherte Dateien erneut gesendet werden.

Antworten:


8

Wenn Sie einen IISReset ausführen, wird der IIS-Cache geleert und nach dem erneuten Sichern neu erstellt, sobald Clientanforderungen eingehen. Wenn Sie eine Datei aktualisieren, wird die ältere zwischengespeicherte Datei veraltet und IIS stellt die aktualisierte Datei und bereit Aktualisieren Sie den Cache mit der neuen Datei.

IISReset (obwohl hart) löscht den IIS-Cache, macht jedoch nichts mit lokalen Caches in Proxys oder Clients. Vielleicht haben Sie gerade die Terminologie ein wenig durcheinander gebracht, aber es gibt kein Konzept von "resent", wenn es um das Caching geht. Es basiert alles auf Anfragen. Wenn ein Client etwas anfordert und es in einem Cache gefunden wird, wird es aus dem Cache bereitgestellt. Sie müssen das Ablaufen von Inhalten für Ihre Dateien erzwingen, wenn Sie dieselben Dateinamen beibehalten möchten.


Danke für die Hilfe. Bitte verzeihen Sie meine Unwissenheit in diesem Bereich ... Ich bin verwirrt zwischen dem Client und dem IIS-Cache. Der Begriff "erneut senden" bezieht sich auf den Server, der den Inhalt sendet, anstatt ihn aus dem Cache des Clients zu ziehen.
DaveK

@ Dave keine Sorgen, froh, dass es geholfen hat! Ein zusätzliches Bit: Wenn sich eine Datei in einem Client-Cache oder einem Upstream-Proxy-Cache befindet, erhält der Server die Anforderung erst dann, wenn das zwischengespeicherte Element veraltet ist und eine neuere Version vom Server verfügbar ist.
Squillman

3

Nein, das Client-Caching basiert auf der Ablaufzeit des Inhalts.


3

Wenn Sie eine Javascript-Datei ändern, benötigen Sie ALLE Clients, die die Webanwendung ausführen, um die neue Datei zu erhalten. Mir ist klar, dass es sich um die "aktuelle" handelt.

Damit jeder Client die neue Datei vom Server erhält, müssen Sie nur das Include / Skript Ihres Javascript auf der Webseite einfügen "?version=1".

Es ist nur ein Parameter erforderlich, ?blue=hellooder ?v=1234155es ist so, wie Sie es möchten. Es ist wichtig, bei jeder Änderung des Javascript einen anderen Wert zu verwenden. "?version=1"Für die erste Änderung, "?version=2"für die zweite Änderung ist es praktisch und einfach, den nächsten Wert zu kennen. Sie können auch eine GUID verwenden, wenn Sie möchten: "?version=4747b320-62ce-11cf-a5d6-28db04c10777"oder Sie können Datum und Uhrzeit "?version=20130220175025"für 2013/02/20 17:50:25 verwenden.

Beispiel 1

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?version=1"></script>

Beispiel 2

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?k=4747b320-62ce-11cf-a5d6-28db04c10777"></script>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.