Как установить значение S-MaxAge CacheControl в приложении ASP.NET? - PullRequest
8 голосов
/ 10 августа 2010

Я пытаюсь установить кэшируемость ресурса ASP.NET . Так что, если я пойду в / foo / show, он покажет View для некоторого ресурса и кеширует его на несколько часов (например). Для этого я использую атрибут OutputCache, который украшает мой метод действия. Подробности этого кэша (против этого метода действия) находятся в файле web.config.

Когда я устанавливаю этот кэш вывода, он правильно устанавливает maxage value .., но значение s-maxage равно 0. WTF?

вот код ...

[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }

и вот фрагмент файла конфигурации ..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah"  />

и фрагмент ответа ...

Cache-Control:public, max-age=3576, **s-maxage=0**
Content-Length:746
Content-Type:application/json; charset=utf-8
Date:Tue, 10 Aug 2010 00:42:17 GMT
Expires:Tue, 10 Aug 2010 01:41:53 GMT
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT
Server:Microsoft-IIS/7.0
Vary:*

Обратите внимание, как правильно установлен максимальный уровень, а s-maxage НЕТ? кто-нибудь может мне помочь, здесь?

1 Ответ

12 голосов
/ 10 августа 2010

Я нашел ответ, [AuthorizeAttribute] очищает любое значение до нуля.Это означает, что ни один прокси не имеет кеша для результата просмотра, который имеет Авторизация .

Я предполагаю, что содержимое кеширования прокси через URL-адрес ..., так что если URL-адрес не содержит никаких деталей аутентификации (что на самом деле не должно ... :)) .. тогда откуда ему знать, какие два разных запроса относятся к одному и тому же человеку или нет?

(я добавил этот ответ вместо удаления, чтобы помочьдругие разработчики с этой проблемой).

Также, ПОХОЖИЕ ВОПРОС: Может кто-нибудь объяснить мне этот блок кода ASP.NET MVC, пожалуйста?

...