IIS - настройка заголовка кеша для каждого типа файла

Я хотел бы задать разные значения заголовка кеша для моих js, css и html файлов. Я знаю о возможности установить его для каждой папки, но мое приложение имеет файлы html и js в одной папке.

Возможно ли это в IIS?

Ответ 1

Это возможно в IIS 7+ с использованием правил пересылки исходящих сообщений IIS. Например. если вы хотите аннулировать все .html-страницы, создайте следующее исходящее правило (после установки модуля перезаписи IIS) в разделе outboundRules файла web.config:

<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>

Ответ 2

Ответ @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>