Получите Asp.net/iis, чтобы установить Cache-control: max-age для статических файлов

У нас есть проект Webforms с маршрутизацией URL. Я определил маршруты исключений для изображений и 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.

Ответ 1

Решение использует раздел system.webserver в файле web.config для настройки кеширования (и сжатия) сервера. Вот начальная точка: 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>

Ответ 2

Ответ Dario дал мне большую часть пути, но мне пришлось добавить атрибут <clientCache>, cacheControlCustom="public", в противном случае IIS не отправил заголовок Cache-Control в браузер. См. этот ответ.