2010-08-10 12 views
7

Ich versuche, die cachability eine ASP.NET Ressource zu setzen. Wenn ich also goto/foo/show zeige, wird eine Ansicht für einige Ressourcen angezeigt und diese für ein paar Stunden zwischengespeichert (zum Beispiel). Zu diesem Zweck verwende ich das OutputCache-Attribut, das meine Aktionsmethode schmückt. Die Details dieses Cache (gegen diese Aktionsmethode) finden Sie in der Datei web.config.Wie legt man den S-MaxAge CacheControl Wert in einer ASP.NET App fest?

Wenn ich diesen Ausgabe-Cache einstelle, wird der Wert maxage value richtig eingestellt, aber der Wert s-maxage ist 0. WTF?

hier ist der Code ...

[Authorize] 
[OutputCache(CacheProfile = "SomeController_Show")] 
public ActionResult Show(){ ... } 

und hier ist ein Ausschnitt aus der Konfigurationsdatei ..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah" /> 

und ein Ausschnitt aus der Antwort ...

Cache-Control:public, max-age=3576, **s-maxage=0** 
Content-Length:746 
Content-Type:application/json; charset=utf-8 
Date:Tue, 10 Aug 2010 00:42:17 GMT 
Expires:Tue, 10 Aug 2010 01:41:53 GMT 
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT 
Server:Microsoft-IIS/7.0 
Vary:* 

Beachten Sie, wie der maxage richtig eingestellt ist, aber der s-maxage ist nicht? Kann mir hier jemand helfen?

Antwort

12

ich die Antwort gefunden, löscht die [AuthorizeAttribute] jede maxage auf Null. Dies bedeutet, dass keine Proxies jedem Cache ein View-Ergebnis geben, das Authorization hat.

Ich vermute, Proxies Cache-Inhalt über die URL .. also, wenn die URL keine Authentifizierungsdetails enthält (was eigentlich nicht ... :) sollte) .. woher weiß es, welche zwei unterscheiden Anfragen sind für die gleiche Person oder nicht?

(Ich habe diese Antwort anstelle des Löschens, hinzugefügt mit diesem Thema andere Devs zu helfen).

Ebenfalls ÄHNLICHE FRAGE: Can someone explain this block of ASP.NET MVC code to me, please?

Verwandte Themen