asp.net和IIS缓存问题

时间:2011-10-18 15:48:35

标签: asp.net iis caching outputcache

我已将我的网站通过Google的pagespeed测试,它告诉我“利用浏览器缓存”。

我对此做了一些研究,发现我需要在IIS 6中启用内容过期。我这样做并将内容设置为每30天过期一次。然后我再次通过pagespeed测试我的网站,它仍然提出了“利用浏览器缓存”建议。

我还将网站放到http://web-sniffer.net以查看最新消息,然后通过Cache-Control返回:私有。

然后我在网络表单中尝试了<%@ OutputCache Duration="30" VaryByParam="none" %>,现在它又回来了Cache-Control:public,max-age = 30,我猜这是正确的行,但google页面速​​度测试仍在回归我的网页上的资源列表(主要是图片)没有过期。

我对这个问题很困惑。我的印象是网站将继承IIS设置,但直到我打开页面上的outputcache才会出现这种情况。有没有办法让网站使用IIS设置,或者是否必须逐页完成?

2 个答案:

答案 0 :(得分:0)

Pagespeed可能指的是静态资源,如js,css,png,gif等文件。 默认情况下,IIS内容过期不适用于这些文件。您需要手动编辑IIS元数据库。

http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx

答案 1 :(得分:0)

尝试将以下内容添加到表单中的代码隐藏中:

Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetExpires(DateTime.Parse("6:00:00PM"));

http://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.aspx

HttpCacheability枚举:

  1. NoCache的
  2. 私人
  3. 服务器
  4. ServerAndNoCache
  5. 公共
  6. ServerAndPrivate
  7. http://msdn.microsoft.com/en-us/library/system.web.httpcacheability.aspx