Заголовки истечения срока действия YSLOW на веб-сайте MVC 5
Я использовал YSlow для тестирования веб-сайта ASP.NET MVC и получил ошибку:
"Добавить заголовки истечения" для следующих предметов:
(no expires) http://www.mydomain.pt/assets/logo.png
(no expires) http://www.mydomain.pt/favicon-196x196.png
(2013/12/30) http://www.mydomain.pt/file/e6fb9d2a-668b-423a-9120-0b34228f296c
Странно, что я решил эти вопросы. Для статики я использовал:
ИСПРАВЛЕННЫЙ
<system.webServer>
<clientCache setEtag="false" cacheControlMode="UseMaxAge" cacheControlMaxAge="60.00:00:00" />
</system.webServer>
А для файла, возвращаемого действием, у меня есть:
[Route("file/{identifier:guid}"), HttpGet, OutputCache(Duration = 1200, Location = OutputCacheLocation.Client, VaryByParam = "identifier")]
public virtual ActionResult Get(Guid identifier, String n = null) {
}
Кто-нибудь знает, почему у меня до сих пор нет кеша на эти предметы?
Я что-то пропустил?
Спасибо, Мигель
2 ответа
Используйте следующий синтаксис:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="60.00:00:00" />
</staticContent>
</system.webserver>
Сжатие статических файлов не имеет ничего общего с заголовками срока действия. Сжатие связано с GZip.
Причина, по которой у файлов.png нет заголовка Expiry, который вы задаете в методе действия, заключается в том, что MVC не используется для обслуживания статических файлов, поэтому он не устанавливает заголовки.