WebResource.axd и заголовки HTTP

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

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

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

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

Спасибо,

барон


person BnWasteland    schedule 09.04.2009    source источник


Ответы (3)


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

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

Другие типы HttpCacheability описаны здесь:

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

Изменить:

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

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

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

person Atanas Korchev    schedule 11.04.2009

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

person BnWasteland    schedule 12.04.2009