Я пытаюсь установить доступность ресурса ASP.NET . Поэтому, если я перейду в / foo / show, он покажет View для некоторого ресурса и кеширует его на несколько часов (например). Для этого я использую атрибут OutputCache, который украшает мой метод действия. Подробности этого кеша (относительно этого метода действия) находятся в файле web.config.
Когда я устанавливаю этот выходной кэш, он правильно устанавливает максимальное значение
.. но s -maxage
значение 0. WTF?
вот код ...
[Authorize]
[OutputCache(CacheProfile = "SomeController_Show")]
public ActionResult Show(){ ... }
и здесь ' sa фрагмент файла конфигурации ..
<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:*
Обратите внимание, как maxage задан правильно, а s-maxage НЕ? может кто-нибудь помочь мне здесь?
Я нашел ответ, [AuthorizeAttribute]
очищает любой maxage до нуля. Это означает, что ни один прокси не кэширует результат просмотра, который имеет Authorization.
Я предполагаю, что прокси кэшируют контент по url... так что если url не содержит никаких данных аутентификации (а это действительно не должно быть так... :) )... тогда как он узнает, какие два разных запроса предназначены для одного и того же человека или нет?
(Я добавил этот ответ вместо удаления, чтобы помочь другим разработчикам с этой проблемой).
Также, СИМВОЛИЧЕСКИЙ ВОПРОС: Может кто-нибудь объяснить мне этот блок кода ASP.NET MVC, пожалуйста?