IIS - 为每种文件类型设置缓存控制头

时间:2015-10-07 08:35:48

标签: iis

我想为我的js,css和html文件设置不同的缓存控制头值。 我知道在每个文件夹的基础上设置它的选项,但我的应用程序在同一文件夹中有html和js文件。

甚至可以在IIS中使用吗?

2 个答案:

答案 0 :(得分:10)

使用IIS出站重写规则在IIS 7+中可以实现。例如。如果要使所有.html页面无效,请在web.config的outboundRules部分中创建以下出站规则(在安装IIS重写模块之后):

<outboundRules>
  <rule name="AdjustCacheForHTMLPages" preCondition="IsHTMLFile">
    <match serverVariable="RESPONSE_Cache-Control" pattern=".*" />
    <action type="Rewrite" value="no-cache, no-store, must-revalidate" />
  </rule>
  <preConditions>
    <preCondition name="IsHTMLFile">
      <add input="{REQUEST_FILENAME}" pattern=".*\.html" />
    </preCondition>
  </preConditions>
</outboundRules>

答案 1 :(得分:1)

@jotap的答案仅适用于以“ .html”结尾的文件请求。我也需要它来处理内容类型:

<outboundRules>
  <rule name="AdjustCacheForHTMLPages" preCondition="IsHTML">
    <match serverVariable="RESPONSE_CACHE-CONTROL" pattern=".*" />
    <action type="Rewrite" value="no-cache, no-store, must-revalidate" />
  </rule>
  <preConditions>
    <preCondition name="IsHTML" logicalGrouping="MatchAny">
      <add input="{REQUEST_FILENAME}" pattern="\.html$" />
      <add input="{RESPONSE_CONTENT-TYPE}" pattern="^text/html" />
    </preCondition>
  </preConditions>
</outboundRules>