In ASP.NET Core-Anwendung habe ich eine Aktionsmethode, die einige Daten zurückgibt. Ich wollte diese Daten auf der Clientseite zwischenspeichern . Basierend auf der Dokumentation hier kann ich das Attribut ResponseCache
für die Aktionsmethode verwenden. Dieses Attribut fügt Cache-Control
header in response
Das Zwischenspeichern von Antworten bezieht sich auf die Angabe von cache-bezogenen Headern in HTTP Antworten von ASP.NET Core MVC Aktionen gemacht. Diese Header geben an, wie Sie möchten, dass Client- und Intermediate-Computer (Proxy-Computer) Antworten zwischenspeichern auf bestimmte Anfragen (wenn überhaupt). Dies kann die Anzahl von reduzieren fordert einen Client oder Proxy an, den Webserver zu betreiben, da dies zukünftig der Fall ist Anfragen für dieselbe Aktion können von dem Client oder den Proxys geliefert werden Cache.
auch
Beim Zwischenspeichern von Antworten werden Antworten auf dem Webserver nicht zwischengespeichert. Es unterscheidet sich vom Ausgabe-Caching, bei dem Antworten im Speicher zwischengespeichert werden der Server in früheren Versionen von ASP.NET und ASP.NET MVC.
So sieht meine Aktionsmethode
aus %Vor%Dann rufe ich die Methode mit dem Browser als Ссылка auf Hier sind die Anforderungs- und Antwortheader
Beachten Sie, dass Response Headers wie erwartet Cache-Control: public,max-age-120
hat.
Wenn jedoch die Seite mit F5 aktualisiert wird (vor 120 Sekunden), trifft der Debugger-Haltepunkt in der GetStateProvince-Aktionsmethode immer auf. Das bedeutet, dass die Daten nicht auf der Client-Seite gespeichert werden.
Gibt es noch etwas, das ich tun muss, um clientseitiges Caching zu aktivieren?
Aktualisieren Ich habe versucht, IE, Chrome und POSTMAN ohne Glück zu verwenden. Jedes Mal, wenn ich die URL in die Adresszeile eintippe oder auf den Refresh klicke, macht der Client (dh Browser oder Postbote) eine Call-to-Action-Methode.
Das Attribut ResponseCache funktioniert wie beabsichtigt.
Der Unterschied besteht darin, dass die Antwort zwischengespeichert wird, wenn Sie auf den Seiten Ihrer Website navigieren ( Fall 1 ) oder die Schaltflächen Zurück und Weiter verwenden ( nicht beim Aktualisieren der Seite ).
Als Beispiel für Fall 1 habe ich Folgendes:
Wie Sie im Artikel Response Caching in ASP.Net Core sehen können 1.1 wird folgendes angegeben:
Während einer Browsersitzung können Sie mehrere Seiten innerhalb der Website durchsuchen oder die Zurück- / Vorwärts-Taste verwenden, um die Seiten aufzurufen. Der Inhalt wird aus dem Cache des lokalen Browsers geliefert (wenn nicht abgelaufen).
Aber wenn Seite ist aktualisiert über F5 , wird die Anfrage an den Server weitergeleitet und der Seiteninhalt wird aktualisiert. Sie können es überprüfen, indem Sie die Kontaktseite mit F5 aktualisieren.
Wenn Sie also F5 drücken, spielt der Ablaufwert für die Zwischenspeicherung von Antwort-Caching keine Rolle mehr, um den Inhalt zu liefern. Sie sollten 200 Antworten für die Kontaktanfrage sehen.
Referenzen:
[1]. ASP.NET Core Response Caching-Beispiel (mit Middleware)
[2]. ResponseCache-Attributbeispiel
[3]: Wie das Zwischenspeichern von Webseiten in allen Browsern gesteuert wird ?
Zunächst möchte ich einige Dinge klären und ich bin sicher, dass Sie es bereits wussten.
ResponseCache ist auf keine Weise mit OutputCache identisch.
ResponseCache entspricht meinem Kopfsatz, aber es speichert nichts auf der Serverseite.
Wenn Sie jetzt denselben Cache wie OutputCache verwenden möchten, müssen Sie möglicherweise die Version 1.1 verwenden, die gerade veröffentlicht wird.
ASP.net Core 1.1 Vorschauversion
Sie führen eine neue Response Caching Middleware ein. Antwort Caching Middleware
Demo davon hier verfügbar. Ссылка
Tags und Links asp.net-core asp.net-core-mvc asp.net-core-1.0 coreclr