Получите Asp.net/iis для установки Cache-control: max-age для статических файлов - PullRequest
17 голосов
/ 06 июня 2011

У нас есть проект Webforms с URL-маршрутизацией. Я определил маршруты исключений для изображений и css-файлов как

routes.Add("IgnoreImages", new Route("img/{*pathInfo}", new StopRoutingHandler()));
routes.Add("IgnoreCss", new Route("css/{*pathInfo}", new StopRoutingHandler()));

поэтому статические файлы должны обслуживаться IIS напрямую, а маршрутизация должна быть обойдена.

При проверке ответа для изображения с помощью Fiddler единственным ключом под заголовком Cache является Дата. Чего не хватает, так это Cache-control: max: age key. Как я могу указать политику кэширования для статических файлов? Приложение работает на IIS7.5.

Ответы [ 2 ]

27 голосов
/ 06 июня 2011

Решение использует раздел 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>
15 голосов
/ 30 октября 2013

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

...