Asp.net-Mvc
如何在 ASP.NET 應用程序中設置 S-MaxAge CacheControl 值?
我正在嘗試設置ASP.NET資源的可記憶體性。因此,如果我轉到 /foo/show 它將顯示某個資源的視圖,並將其記憶體幾個小時(例如)。為此,我使用了裝飾我的操作方法的 OutputCache 屬性。此記憶體的詳細資訊(針對此操作方法)可在 web.config 文件中找到。
當我設置此輸出記憶體時,它正確設置了
maxage value,但s-maxage值為 0。這是為什麼呢?這是程式碼:
[Authorize] [OutputCache(CacheProfile = "SomeController_Show")] public ActionResult Show(){ ... }這是配置文件的片段:
<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah" />和響應的片段:
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:*注意 maxage 是如何正確設置的,但 s-maxage 不是?
我找到了答案,將
[AuthorizeAttribute]任何最大值清除為零。這意味著,沒有代理每個記憶體具有Authorization的視圖結果。我猜代理通過 url 記憶體內容 .. 所以如果 url 不包含任何身份驗證詳細資訊(這真的不應該…… :) .. 那麼它如何知道哪兩個不同的請求是針對是不是同一個人?
(我添加了這個答案而不是刪除,以幫助其他開發人員解決這個問題)。
另外,類似的問題:有人可以向我解釋一下這塊 ASP.NET MVC 程式碼嗎?