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

Я пытаюсь установить доступность ресурса 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 НЕ? может кто-нибудь помочь мне здесь?

8
задан Pure.Krome 10 August 2010 в 04:14
поделиться

1 ответ

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

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

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

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

12
ответ дан 5 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: