Получите 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 в браузер. См. этот ответ.