Alle Vorschläge zur Browser-Zwischenspeicherung in einer ASP.NET-Anwendung. Ich habe einige verschiedene Methoden online gefunden, war mir aber nicht sicher, was das beste wäre. Insbesondere möchte ich meine CSS- und JS-Dateien zwischenspeichern. Sie ändern sich, es ist jedoch meist einmal im Monat.Browser-Caching in der ASP.NET-Anwendung
Antwort
Eine andere Technik besteht darin, statische Bilder, CSS und JS auf einem anderen Server (z. B. CDN) zu speichern, bei dem der Expires-Header ordnungsgemäß festgelegt wurde. Der Vorteil hierbei ist zweifach:
- Der Ablauf-Header-Browser und Proxies fördern wird diese statische Dateien
- Die CDN-Offload wird von Ihrem Server-Cache statische Dateien serviert.
- Durch die Verwendung eines anderen Domänennamens für Ihren statischen Inhalt werden Browser schneller heruntergeladen. Dies ist weil serving resources from four or five different hostnames increases parallelization of downloads.
- Wenn das CDN ordnungsgemäß konfiguriert ist und cookieless domain verwendet, haben Sie keine unnötigen Cookies, die hin und her gehen.
Am besten setzen Sie einen Expires-Header in IIS auf die Ordner, in denen der Inhalt zwischengespeichert werden soll. Dies wird die meisten modernen Browser und Proxies dazu bringen, diesen statischen Inhalt zwischenzuspeichern. In IIS 6:
- Klicken Sie mit der rechten Maustaste auf den Ordner (Beispiel CSS oder JS), den Sie im Browser zwischenspeichern möchten.
- Klicken Sie auf Eigenschaften
- Gehen Sie auf die Registerkarte HTTP-Header
- Check "Aktiviert das Ablaufen von Inhalt"
- eine lange Zeit für den Verfall Stellen, wie "Läuft ab nach 90 Tagen"
Blog Yahoos Entwickler talks about this technique .
Ich habe keinen Zugriff auf IIS. Ich denke, nach was ich suchte, war ein guter Weg, es über Code zu tun. – Jason
Wenn ASP.NET CSS & JS-Dateien bereitstellt, können Sie die gleiche Technik auch selbst im Code ausführen ... Response.Cache.SetExpires (DateTime.Now.AddYears (1)); – Keltex
ASP.NET wird ASP.NET-Ressourcen standardmäßig nicht bereitstellen, aber er müsste im Wesentlichen erneut auf IIS zugreifen – annakata
Wenn Sie IIS nicht so konfigurieren, dass asp.net-Steuerelemente für js/css/Image-Anforderungen angegeben werden, werden sie standardmäßig nicht angezeigt. Daher sollten Sie die Response-Header Ihrer Firewall absichtlich optimieren (für langfristige Wartbarkeit)/trafficmanager/Server oder (besser und was die meisten der Welt dieser Stelle tut at) auf der Version Ihrer Dateien in Pfad, dh:
Statt dies in Ihrem Aufschlag des Schreibens:
http://www.foo.com/cachingmakesmesad.css
Verwenden Sie diese:
http://www.foo.com/cachingmakesmesad.css?v1
..und ändern Sie die Versionsnummer, wenn Sie den Cache effektiv löschen müssen. Wenn das jedes Mal ist, könnte man sogar eine GUID oder einen Datumsstempel anhängen, aber ich kann mir keine Gelegenheit vorstellen, wo ich das wirklich tun möchte.
dachte ich Ihre Frage anti-Cache war aber wieder lesen Ich sehe ich eine gute Antwort verschwendet: P
Lange Rede kurzer Sinn, Browser sind in der Regel sehr aggressiv pro-Caching „einfache“ Ressourcen Sie sollten sich also nicht darum kümmern müssen, aber wenn Sie etwas dagegen unternehmen wollten, müssten Sie aus den oben genannten Gründen Zugriff auf eine Firewall/einen Trafficmanager/IIS haben (ASP.NET wird keine Chance erhalten) Standard).
Allerdings ... gibt es keine Möglichkeit, Sie können Caching absolut erzwingen, und Sie sollten es auch nicht. Was zwischengespeichert wird und nicht gecached wird, ist zu Recht die Entscheidung des Endbenutzers, alles was Sie tun können, ist stark zu fordern.
Es lohnt sich zu bedenken, dass die meisten Browser auch ohne Cache-Control- oder Expires-Header Inhalte wie JS und CSS zwischenspeichern. Was passieren sollte, ist der Browser sollte Anforderung der Ressource jedes Mal, wenn es benötigt wird, wird aber in der Regel eine "304 Unmodified" -Antwort erhalten und der Browser verwendet dann das zwischengespeicherte Element. Dies kann immer noch ziemlich teuer sein, da es eine Hin- und Rückfahrt zum Server ist, aber die Ressource selbst nicht gesendet wird, so dass die transferierten Bytes begrenzt sind.
IE verlassen, mit keine spezifischen Anweisungen in Bezug auf die Zwischenspeicherung wird standardmäßig seine eigenen Heuristiken verwenden, um festzustellen, ob es sogar stören sollte, erneut ein Objekt im Cache angefordert. Dies obwohl nicht explizit gesagt wird, dass es eine Ressource zwischenspeichern kann. Seine Humeristik basiert auf dem Last-Modified-Datum der Ressource, je älter es ist, desto unwahrscheinlicher ist es, dass es sich jetzt geändert hat. Sehr wollig.
Ehrlich gesagt, wenn Sie eine Website perfomant machen wollen, müssen Sie die Kontrolle über solche Cache-Einstellungen haben. Wenn Sie nicht auf diese Einstellungen zugreifen können, müssen Sie sich keine Gedanken über die Leistung machen. Informieren Sie den Sponsor, dass er möglicherweise keine gute Leistung erbringt, weil er keine Plattform bereitgestellt hat, mit der Sie diese Leistung erbringen können.
In .net können Sie Ihre JavaScript, CSS und Bilder als eingebettete Ressourcen einrichten. .Net wird dann den Dateiablauf für Sie behandeln. Der Nachteil dieses Ansatzes besteht darin, dass Sie für jede Gruppe von Änderungen eine neue Version erstellen müssen (je nach Implementierung und Arbeitsablauf kann dies ein Vorteil sein).
Sie könnten auch ETags verwenden, aber von dem, was ich in einigen Fällen verstehe, funktioniert es nicht gut, wenn Sie eine Mischung aus IIS and apache Webservers hosting your images haben (oder wenn Sie in Zukunft wechseln wollen).
Sie können nur sicherstellen, dass das Dateidatum neuer ist, und lassen Sie den Server für Sie behandeln, aber Sie müssen sicherstellen, dass der Server richtig konfiguriert ist.
Sie können
<system.webServer>
<staticContent>
<clientCache httpExpires="Tue, 12 Apr 2016 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
</system.webServer>
die clientCache documentation für mehr Details in web.config durch Zugabe von folgenden Code statische Inhalte zwischenzuspeichern.
- 1. Browsercaching programmgesteuert deaktivieren
- 2. Wartung der Bestellung in der Liste in der nächsten Iteration
- 3. Der Datenquellwert in der Verbindungszeichenfolge
- 4. Wie funktioniert die Navigation in der Symbolleiste und der Titel in der Mitte der Aktionsleiste?
- 5. Difference in der Reihenfolge der Spalten in der Matrix in Matlab
- 6. Statische Besetzung in der Mitte der Vererbungskette
- 7. Testen der Datenbankkonnektivität in der C# -Konsolenanwendung
- 8. Setzen der Kopfzeilen in der aktiven Ressourcenanforderung
- 9. Warum steigt der Pfeil in der Vererbung?
- 10. Finden der Länge der Kontur in opencv
- 11. Wichtige Themen in der Theorie der Berechnung
- 12. Uhrzeit der Erstellung der Schlüssel in redis
- 13. Verwendung der Negation in der LocationMatch-Direktive
- 14. , wie der Text in der Mitte machen
- 15. Ändern der Schaltflächenstil in der gesamten Anwendung
- 16. Kennzeichnung der "Beispielverwendung" in der Codedokumentation
- 17. Bootstrap - Karussell in der Hälfte der Seite
- 18. Reihenfolge der Themen in der Ausführung
- 19. Einrichten der Weiterleitung in der Datei web.config
- 20. Messladezeit der Seite in der Fußzeile
- 21. Berechnen der Dauer in der Organisationsmodus-Tabelle
- 22. Fixieren der Nummerierung in der dynamischen Tabelle
- 23. Problem mit der Anmeldung in der Anwendung
- 24. Erwarteter Ausdruck in der Liste der Ausdrücke
- 25. Zählen der Anzahl der Zeichen in TextBox
- 26. aus der Liste der Wörterbuch in Python
- 27. `Refl 'Ding in der Kalkül der Konstruktionen?
- 28. Programmatisches Ändern der Seitenumleitung in der Webkonfiguration
- 29. Putting-Liste in der Mitte der Seite
- 30. Zweck der Hauptmethode in der Java-Webanwendung
Siehe diese Frage: http://stackoverflow.com/questions/914027/disabling-browser-caching-for-all-browsers-from-asp-net –