获取Asp.net/iis设置Cache-control:静态文件的max-age

时间:2011-06-06 11:17:02

标签: asp.net image caching cache-control

我们有一个带url路由的Webforms项目。我已将图像和css文件的异常路由定义为

routes.Add("IgnoreImages", new Route("img/{*pathInfo}", new StopRoutingHandler()));
routes.Add("IgnoreCss", new Route("css/{*pathInfo}", new StopRoutingHandler()));

所以IIS应该直接提供静态文件,并且应该绕过路由。

使用Fiddler检查图像的响应时,Cache标题下的唯一键是Date。缺少的是Cache-control:max:age键。如何为静态文件指定缓存策略?该应用程序在IIS7.5上运行。

2 个答案:

答案 0 :(得分:27)

解决方案是使用web.config文件中的system.webserver部分来配置服务器缓存(和压缩)。这是一个起点:http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

示例:

<configuration>
  <system.webServer>
    <staticContent>
       <clientCache cacheControlMode="UseMaxAge"
        cacheControlMaxAge="1.00:00:00" /> <!-- 1 day -->
    </staticContent>
  </system.webServer>
</configuration>

答案 1 :(得分:14)

Dario的回答让我大部分时间,但我必须向<clientCache>cacheControlCustom="public"添加一个属性,否则IIS不会将Cache-Control标头发送到浏览器。请参阅this answer