Asp.net-Mvc

如何在 ASP.NET 應用程序中設置 S-MaxAge CacheControl 值?

  • February 13, 2021

我正在嘗試設置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 程式碼嗎?

引用自:https://stackoverflow.com/questions/3445298