2009-04-09 3 views
2

Наш сайт просто перешел с .NET 1.1 на .NET 3.5 и в процессе обновил наши сторонние серверные элементы управления. В одном из этих пакетов используется javascript, предоставляемый через WebResource.axd. Они включены как обычные <script src="" /> теги.WebResource.axd и заголовки HTTP

Однако, наблюдая за трафиком, я вижу, что эти файлы javascript сталкиваются с заголовками, которые препятствуют кешированию на стороне клиента. И мы говорим много javascript. Заголовки, о которых идет речь:

 
Cache-control: no-cache, no-store 
pragma: no-cache 
Expires: -1 

Эти заголовки конфигурируются в .NET где-то? Могу ли я перехватить эти запросы, не создавая HttpModule? Является ли это чем-то, чем я могу обвинить поставщика контроля? <brandish weapon="blameGun" />

Спасибо,

Барон

ответ

6

Вы можете попробовать:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public); 

Другие типы HttpCacheability документируются здесь:

http://msdn.microsoft.com/en-us/library/system.web.httpcacheability.aspx

Edit:

Вы можете бросить это в Global.asax файл вместо модуля:

void Application_AuthorizeRequest(object sender, EventArgs e) 
{ 
    if (Request.Path.IndexOf("WebResource.axd") > -1) 
    { 
     Response.Cache.SetCacheability(HttpCacheability.Public); 
    } 
} 
5

Это может произойти, если ваш веб-сайт развернут с <compilation debug="true"> набором в его web.config. В этом случае кэширование отключается для упрощения отладки файлов JavaScript, используемых в качестве встроенных ресурсов. Решение состоит в том, чтобы просто установить для атрибута отладки тега компиляции значение false. Более подробную информацию можно найти в this отличном сообщении в блоге.

0

Спасибо за ваши ответы. Оказалось, что у нас уже был HttpModule, который я не хотел писать на месте, и это стало причиной проблемы.