ASP.NET MVC3 IIS7.5: Cache-Control的maxage始终为0(不利于客户端缓存)

3

我正在使用Fiddler测试我的网站,发现Web服务器总是返回

Cache-Control: private, s-maxage=0

针对动态内容(MVC操作)进行设置,以防止页面在客户端被缓存。我想知道这是MVC还是IIS的问题。我该如何解决?我真的需要客户端缓存正常工作。

谢谢!

P.S. 下面是完整的响应头:

HTTP/1.1 200 OK Cache-Control: private, s-maxage=0 Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.5 X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 X-UA-Compatible: IE=edge,Chrome=1 Date: Sun, 20 Nov 2011 23:07:46 GMT Content-Length: 2050


好奇。我遇到了完全相反的问题。在IIS7.5上运行的MVC 3会在每个操作中添加cache-control:private,从而将每个页面缓存到浏览器中。使用全局输出缓存过滤器解决了这个问题。不过我一开始并没有找出是什么设置了它。 - Simon Halsey
1个回答

7

在控制器和/或操作上使用OutputCacheAttribute,为该控制器的操作或特定操作设置缓存策略。

 [OutputCache( Location = OutputCacheLocation.Client, Duration = 600 )]
 public class HomeController : Controller
 {
    ..
 }

谢谢您的回复!我实际上编写了一个自定义过滤器,只是忘记了 ASPNET 已经默认提供了输出缓存 :) - Alex Avrutin
顺便问一下,s-maxage=0是什么意思?即使启用缓存,它也是0。 - Alex Avrutin
对于共享缓存(代理),它指定应使用此值而不是max-age值:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3 - tvanfosson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接