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>