Frage

Ich mag Bilder haben, CSS und JavaScript im Cache gespeicherten Client-Seite in ihrem Browser, wenn sie eine Webseite laden. Es gibt so viele verschiedene Arten von Zwischenspeichern Ich bin verwirrt zu, welche zu Verwendung mit asp.net Mvc.

wäre es auch möglich, den Browser für neue oder modifizierte Versionen dieser Dateien überprüfen zu lassen?

Danke!

War es hilfreich?

Lösung

Browser kümmern diese automatisch für Sie, eigentlich. Sie müssen Ihren Weg zu gehen, um sie zu NICHT Cache CSS, JS, HTML und Bilder.

Ich bin nicht so mit ASP MVC vertraut, aber ich denke, sie geben Sie das Caching an denken ist Opcode-Caching für Ihre erstellte dynamische Ausgabe serverseitigen?

Andere Tipps

Sie müssen Set-Cache-Control-Header auf dem Server. Sie können dies tun, indem Sie diese in Ihrer web.config kleben:

<system.webServer>
  <staticContent>
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
  </staticContent>
</system.webServer>

Dies würde den Browser jetzt sagen, auch für neue Inhalte überprüfen auf etwas statisch für 30 Tage.

Für Ihre zweite Frage stellt einen Mechanismus einen Abfragezeichenfolgeflag zum Inhalt hinzuzufügen. In meinem aktuellen Projekt komprimieren wir und und JavaScript und CSS als Teil des Build kombinieren. Wenn Links auf der Seite setzen ist aussieht wie:

<script src="/Resources/Javascript/Combined.js?v=2.2.0.1901" type="text/javascript"></script>

Die Abfragezeichenfolgeflag ist die Major.Minor.0.Changeset Zahl und ändert jederzeit wir einen Build drücken, wodurch der Client wieder holen sie. Genau das gleiche geschieht auf Stylesheets in ihrem <link> Elemente.

@ Paul Creasey und @Salsa sind beide richtig, dass Browser-Caching standardmäßig behandelt, solange die Verbindung die gleiche ist.

Wie Sie erwähnt haben, wirft dies ein Problem, wenn Sie diese Dateien aktualisieren müssen, wie Sie keine Garantie, dass der Browser-Client für eine aktualisierte Version überprüfen. In vielen Fällen werden sie dies nur tun, nachdem eine bestimmte Zeit verstrichen ist, die einen miesen Benutzererlebnis schaffen.

Es gibt eine Reihe von Fragen bereits auf dieser Seite gefragt, wie der Client-Browser zu behandeln Alarmierung auf aktualisiert den Cache . Kurz gesagt, alles, was sie verlassen sich auf die Änderung der Link, wenn Sie den Inhalt der Datei ändern.

Sie können einen Parameter an die URL anhängen, die nur für das Caching verwendet werden wie zum Beispiel:

<script src="/myJavascript.js?version=4"></script>

Dann einfach die Versionsnummer ändern, wenn Sie den Inhalt und die Notwendigkeit ändern, um eine Client-Seite zu zwingen Refresh ala diese Antwort .

Werfen Sie einen Blick auf die beantworte ich hier gepostet für eine Lösung, die den Vorteil der Verwendung von Caching maximiert und vermeidet Probleme mit den Nutzern zu 'harten' Refresh benötigen ( Strg + F5 ).

Es verwendet einen MD5-Hash des Inhalts selbst in der URL, so dass die URL gleich bleibt, solange die Datei das gleiche ist, das ist wirklich das Ziel ist. die Hash-Berechnung ist super schnell, und es ist im Speicher auf dem Server gespeichert werden, damit Seiten-Rendering wird nicht merklich verlangsamt. Das Ganze wird in Mikrosekunden gemessen, und die Vorteile waren (auf meiner Website für Taucher ) genial so weit. Ich es auf alle Bilder, CSS und JS mit Ausnahme von Bildern aus CSS-Dateien, da sie nicht vom Server generierte auf meiner Website sind (noch).

Dies ist am besten in IIS oder in Ihrer Konfigurationsdatei durchgeführt. - Stellen Sie sicher, dass Ihre CSS / JS / Bilder eingestellt sind nie abläuft

Wenn Sie sie von Ihrem Code verweisen, schlage ich vor, eine Version oder Build-Datum an den Dateinamen angehängt, zum Beispiel script.js? 20100120, so dass, wenn Sie an sich ändernde sie kommen um, man muss nur die Version ändern, um eine Auffrischung von allen Browsern zu erzwingen, die es zwischengespeichert haben.

Client Side Caching wird automatisch von Browsern behandelt, wenn Sie richtig eingestellt Cache-Control-Header und Set web.config. Wie folgt aus:

<system.webServer>
    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00.00:10:00" />
    </staticContent>
</system.webServer>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top