2012-03-05 5 views
3

Использование любого из OutputCacheProfiles приведенных нижеКак подавить заголовок Vary: * при использовании OutputCacheProfiles

<caching> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <clear/> 

     <add 
     name="CachingProfileParamEmpty" 
     duration="87" 
     varyByParam="" 
     location="Any" 
     /> 

     <add 
     name="CachingProfileParamNone" 
     duration="87" 
     varyByParam="None" 
     location="Any" 
     /> 

     <add 
     name="CachingProfileParamStar" 
     duration="87" 
     varyByParam="*" 
     location="Any" 
     /> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

заголовка Vary: * всегда отправляется

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/10.0.0.0 
Date: Mon, 05 Mar 2012 20:11:52 GMT 
X-AspNetMvc-Version: 3.0 
Cache-Control: public, max-age=87 
Expires: Mon, 05 Mar 2012 20:13:13 GMT 
Last-Modified: Mon, 05 Mar 2012 20:11:46 GMT 
Vary: * 
Content-Type: text/html; charset=utf-8 
Content-Length: 5368 
Connection: Close 

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

this.Response.Cache.SetOmitVaryStar(false); 

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

[OutputCache(Duration = 60, VaryByParam = "", Location = OutputCacheLocation.Any)] 
public ActionResult Index() 

Что я делаю неправильно? Я бы предпочел использовать CacheProfiles, поскольку они могут быть изменены в web.config.

Заголовки, размещенные здесь, принадлежат Cassini (Server: ASP.NET Development Server/10.0.0.0), но я видел идентичные результаты в IIS 7 в Windows 2008.

ответ

9

Возможно, для amit_g может быть немного запоздалым, но для тех, кто ищет ответ, вы можете указать настройку выходного кэша всей конфигурации в config для удаления заголовка ответа Vary. *.

<caching> 
    <outputCache omitVaryStar="true" /> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     ... 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 
3

Обратите внимание, что использование «истина» для SetOmitVaryStar является правильным значением для опускаем Варах: * заголовок (не ложь, которая не опускаем).

Используя следующий код работает для меня:

this.Response.Cache.SetOmitVaryStar (истинное);

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

  • Нет связанных вопросов^_^