2012-06-22 3 views
5

я следующий метод действия:MVC3 OutputCache VaryByHeader = Cookie не установлен

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)] 
public ActionResult Index() 

Но когда я делаю запрос, эти заголовки, выданные:

Cache-Control: private, max-age=60, s-maxage=0 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: Fri, 22 Jun 2012 09:56:32 GMT 
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT 
Vary: Accept-Encoding 

Почему не включая заголовок Cookie в Vary?

Я пробовал много вариаций OutputCache настроек, но безрезультатно :(

ответ

0

Так что ответ включенного в ссылку Andrew Bullock url «имя файла страницы», так как «сжатие iis перезаписывает заголовок для изменения».

Но с декабря 2013 г. доступно исправление (найдено на ссылке Andrew Bullock). Как обычно, этот hotfi x может быть включен в регулярные исправления, поэтому перед его применением обязательно имейте это в виду.

И как это «лучшая практика» явно предоставлять информацию из ссылок, а не только поставки по ссылке (в случае, если страница идет вниз), вот аннотация:

IIS динамическое сжатие переписывает заголовок Vary. Это, по-видимому, относится к IIS с версии 5 до версии 8 (при накоплении информации из блога msdn и из msdn kb). Либо отключите динамическое сжатие IIS, либо попробуйте применить исправление, доступное по адресу http://support.microsoft.com/kb/2877816/en-us, если необходимо. (Эта проблема может быть исправлена ​​с помощью регулярных исправлений в версиях Windows 8.1/2012 R2. Исправление доступно начиная с IIS 7, лично протестированного на win7 sp1, еще не на моих серверах.)

В моем конкретном случае у меня было еще одна проблема: asp.net не выдавал ни одного заголовка Vary (сжатие включено или нет) с outputCachelocation установлено на Client. Установив его на Downstream, «решена» эта дополнительная проблема. Но, конечно, это имеет побочный эффект от изменения Cache-Control от private до public. (Теперь можно кэшировать прокси, а не только в браузере клиента.)

Смежные вопросы