das Problem Einführungdie MVC.NET Output konfigurieren 304 zurückzukehren Geändert Nicht, wenn ein Action nicht geändert hat
Wir haben erfolgreich den Browser-Cache konfiguriert haben eine gespeicherte Antwort zurück, wenn der Server 304 Not Modified
anzeigt. Hier ist die config:
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add
name="TransparentClient"
location="Client"
duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Die web.config ist perfekt und setzt Cache-control:private, max-age=0
so dass:
- Der Browser wird Antworten cachen,
- wird immer den Cache validieren und
- wird die zwischengespeicherte Antwort zurückgeben, wenn der Server antwortet 304.
Das Problem ist, dass unsere MVC.NET Aktionen immer 200 reagieren und nie 304.
Das Problem
Wie konfigurieren wir die Ausgabezwischenspeicherung eines 304 nicht geändert zurückzukehren, wenn eine Action nicht geändert hat?
- Gibt es eine integrierte Cache-Validierung in MVC.NET?
- Wenn nicht, wie können wir unseren Cache-Validierungsmechanismus rollen?
Der Roll-Our-Own wird wahrscheinlich einen Action Filter mit ETag oder Last-Modified benötigen.
Screen Shots
Hier ist ein Screenshot Fiddler das Fehlen eines
318 304. zeigt eine SHIFT + Refresh.
332 ist ein Refresh, von dem wir erwarteten, dass es 304 ergeben würde. Problem.
Suche und Forschung
ASP.NET MVC : how do I return 304 "Not Modified" status? erwähnt einen 304 aus der Aktion zurück. Das bietet keine Möglichkeit, den OutputCache mit einem 304 genau reagieren zu lassen.
Working with the Output Cache and other Action Filters zeigt, wie OnResultExecuted überschrieben wird, das Hinzufügen/Entfernen von Headern zu ermöglichen.
Sie wahrscheinlich gemeint # 332 ... – haim770