Заголовки истечения срока действия 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 не используется для обслуживания статических файлов, поэтому он не устанавливает заголовки.

Добавить истекает заголовок к изображениям

Другие вопросы по тегам