Как указать HTTP срок действия заголовка? (ASP.NET MVC + IIS) - PullRequest
52 голосов
/ 09 апреля 2010

Я уже использую кэширование вывода в своем приложении ASP.NET MVC.

Скорость страницы говорит мне указать срок действия кэша HTTP для css и изображений в заголовке ответа.

Я знаю, что объект Response содержит некоторые свойства, которые контролируют срок действия кэша. Я знаю, что эти свойства можно использовать для управления кэшированием HTTP для ответа, который я передаю из моего кода:

Response.Expires
Response.ExpiresAbsolute
Response.CacheControl

или альтернативно

Response.AddHeader("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");

Вопрос как установить заголовок Expires для ресурсов, которые обслуживаются автоматически, например, изображения, CSS и такие?

Ответы [ 3 ]

77 голосов
/ 09 апреля 2010

Нашли:

Мне нужно указать клиентский кеш для статического содержимого (в web.config).

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" 
      cacheControlMaxAge="12:00:00" cacheControlMode="UseMaxAge" />
    </staticContent>
   </system.webServer>
</configuration>

от http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

30 голосов
/ 22 июня 2011

Если вы хотите сделать это из кода для ресурса, который вы возвращаете (т. Е. Не статический файл, обслуживаемый из IIS), вам лучше использовать Response.Cache:

Response.Cache.SetExpires(DateTime.Now.AddYears(1));
Response.Cache.SetCacheability(HttpCacheability.Public);

Я знаю, что это не совсем то, о чем вы просите, но я нашел этот вопрос через Google, и думаю, что этот ответ может понравиться другим, поскольку он связан с API, которые вы показываете в исходном тексте вопроса.

2 голосов
/ 09 апреля 2010

Посмотрите на мини-статический контент доставки проекта. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...