Добавление заголовков кэша через Web.config только для определенных местоположений

У нас есть приложение, разработанное третьей стороной, и я не хочу возвращаться к ним, чтобы заставить их добавить управление кешем для определенных страниц.

Все страницы, для которых необходимо отключить кэширование, находятся в одном каталоге.

Проблема в том, что IE, похоже, не следует Cache-control:nocache должным образом, поэтому нам нужно добавить Pragma:nocache и также возраст кэша.

Есть ли способ сделать это с помощью конфигов в каталоге? будет ли он каскадным через все дочерние каталоги? Можно ли это сделать через основной web.config?

Чтобы было ясно, я не ищу способ сделать это с помощью кода, это должно быть с помощью конфигурации файлов IIS или web.config.

Мы используем ASP.NET 2.0 и 4.0 на IIS 6.0.


person Martin    schedule 09.02.2012    source источник


Ответы (2)


Это можно сделать в IIS с помощью пользовательского интерфейса, на самом деле это довольно просто, по крайней мере, так было в моем случае использования.

Все, что вам нужно сделать, это просто открыть диспетчер IIS, перейти на сайт, а затем в каталог, в который вы хотите добавить заголовки, щелкните правой кнопкой мыши -> свойства.

Перейдите на вкладку «Заголовки» и добавьте нужные заголовки.

Это идет рекурсивно вниз по дочерним каталогам и добавляет заголовки перед любым добавленным кодом.

В IIS 7.0/7.5 вы можете использовать раздел StaticContent файла web.config в каждом из каталогов.

person Martin    schedule 09.02.2012
comment
Получите +1,5, чтобы найти это от меня :) - person Aristos; 10.02.2012
comment
Можно ли это сделать для определенного URL-адреса, мое приложение является приложением MVC3. - person Krunal; 09.03.2013
comment
Я не знаю способа, но разделы <location> web.config могут иметь эту возможность? Я отчитаюсь, если найду что-нибудь, хотя - person Martin; 12.03.2013

Вы можете сделать это на global.asax

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    string cTheFile = HttpContext.Current.Request.Path;

    if (cTheFile.Contains("/ExtraDir/"))
    {
        // add your header here
        app.Response.AppendHeader("Pragma", "no-cache");    
    }

    //... rest code of...
}
person Aristos    schedule 09.02.2012
comment
Спасибо за ответ, но я ищу, почему это нужно делать с помощью конфигурации, а не на основе кода. я обновлю вопрос - person Martin; 09.02.2012
comment
дополнительные заголовки могут быть загружены метабазой IIS, что означает, что это можно сделать. Это также можно сделать с помощью элемента статического содержимого в IIS7.0. - person Martin; 09.02.2012
comment
Вы можете добавить его на основе каталога, в чем вопрос. Все они находятся в Едином каталоге. Кажется, вы можете добавлять заголовки ко всему из каталога. - person Martin; 09.02.2012
comment
Смотрите мой ответ, это возможно, даже если они не настроены как виртуальные каталоги. - person Martin; 10.02.2012