IIS 8.0添加Expires头和Cache-Control

时间:2016-03-13 11:10:25

标签: asp.net-mvc caching iis-8 cache-control expires-header

我可以看到stackoverflow为他们的图片,css,js等添加ExpiresCache-Control,所以我也尝试这样做,我试过this文章

的web.config

<location path="Content">
    <system.webServer>
      <staticContent>

    <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" 
    cacheControlMaxAge="365.00:00:00" />

    <clientCache cacheControlMode="UseExpires" httpExpires="Mon, 01 May 2023 00:00:00 GMT" />

      </staticContent>
    </system.webServer>
</location>

当我尝试在内容文件夹中访问css文件时:http://localhost:11111/Content/bootstrap.min.css

我收到以下错误

错误

  

HTTP错误500.19 -

     

内部服务器错误由于页面的相关配置数据,无法访问请求的页面       无效。

Module           CustomErrorModule
Notification     SendResponse
Handler          StaticFile
Error Code       0x8007000d
     

配置错误配置元素'clientCache'已定义

我知道clientCache已经定义了,但是我很关心并想知道如何在响应标头中设置Cache-Control和Expires?

任何帮助都会很棒。

更新

正如@Vitaly Kulikov在评论中回答并讨论并使用thisthis帖子我得出结论,在IIS中我们可以在web.config中设置Expires and Cache-Control,所以我有计划至少使用OutputCache为图片设置过期,并且它与0.9 milliseconds延迟一起使用。希望帮助某人。

1 个答案:

答案 0 :(得分:3)

根据规范,你无法同时拥有它们。但是你没有理由这样做,你对任何人都没问题。

Specification

如果你查看Chrome源code,浏览器中的缓存有几个简单的规则

首先:

  

max-age指令优先于Expires,因此如果存在max-age   在响应中,计算简单:fresh_lifetime = max_age_value

第二

  

否则,如果响应中存在Expires,则计算结果为:fresh_lifetime = expires_value - date_value

第三

  

如果我们错过了之前的步骤和&#34;缓存控制&#34; !=&#34;必须重新验证&#34;,然后浏览器还有一个缓存规则:它将资源缓存自资源的上次修改日期以来10%的时间。

那就是它,没有更多的规则。