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

Pur*_*ome 8 asp.net-mvc caching outputcache s-maxage

我想设置缓冲能力的的ASP.NET资源.所以,如果我转到/富/显示它会显示一些资源视图,并缓存这几个小时(例如).为此,我使用了OutputCache属性来装饰我的Action方法.可以在web.config文件中找到此缓存的详细信息(针对此操作方法).

当我设置此输出缓存时,它正确设置maxage value..但s-maxage值为0. WTF?

这是代码......

[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }
Run Code Online (Sandbox Code Playgroud)

这是配置文件的片段..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah"  />
Run Code Online (Sandbox Code Playgroud)

以及回复的片段......

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:*
Run Code Online (Sandbox Code Playgroud)

请注意如何正确设置maxage但是s-maxage不是?有人可以帮助我吗?

Pur*_*ome 12

我找到了答案,将[AuthorizeAttribute]任何最大值清除为零.这意味着,每个缓存都没有代理具有授权的视图结果.

我猜通过url代理缓存内容..所以如果url不包含任何身份验证细节(实际上不应该...... :))..那么它如何知道哪两个不同的请求是为了同一个人与否?

(我已添加此答案而不是删除,以帮助其他开发人员解决此问题).

同样,类似的问题:有人可以向我解释这个ASP.NET MVC代码块吗?