ASP.NET MVC: OutputCache и http заголовки - PullRequest
4 голосов
/ 16 июля 2009

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

Я установил время кеширования на 5 минут, и заголовок Expires появляется так же, как заголовок Last-Modified, который является временем выполнения запроса.

Это заголовок, который я сейчас получаю:

Date                    Thu, 16 Jul 2009 06:35:07 GMT
Server                  Microsoft-IIS/6.0
X-Powered-By            ASP.NET
X-AspNet-Version        2.0.50727
X-AspNetMvc-Version     1.0
Content-Encoding        gzip
Cache-Control           public, max-age=300
Expires                 Thu, 16 Jul 2009 06:35:06 GMT
Last-Modified           Thu, 16 Jul 2009 06:35:03 GMT
Vary                    *
Content-Type            text/html; charset=utf-8
Content-Length          575

Это заголовок, который я ожидаю:

Date                    Thu, 16 Jul 2009 06:35:07 GMT
Server                  Microsoft-IIS/6.0
X-Powered-By            ASP.NET
X-AspNet-Version        2.0.50727
X-AspNetMvc-Version     1.0
Content-Encoding        gzip
Cache-Control           public, max-age=300
Expires                 Thu, 16 Jul 2009 06:40:06 GMT
Last-Modified           Thu, 16 Jul 2009 06:35:03 GMT
Vary                    *
Content-Type            text/html; charset=utf-8
Content-Length          575

Любые идеи о том, почему это будет делать?

Приветствие Anthony

1 Ответ

5 голосов
/ 16 июля 2009

max-age имеет приоритет (от RFC 2616 ):

Мы используем термин expires_value для обозначить значение Expires заголовок. Мы используем термин max_age_value для обозначения соответствующее значение числа секунд, переносимых «максимальным возрастом» директива заголовка Cache-Control в ответе (см. раздел 14.9.3).

Директива max-age имеет приоритет более истекает, поэтому, если присутствует максимальный возраст в ответе расчет просто:

  freshness_lifetime = max_age_value 

В противном случае, если Истекает присутствует в ответе, Расчет:

  freshness_lifetime = expires_value - date_value

Таким образом, клиент должен использовать кэшированную версию, как вы ожидаете.

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