Установить кеш-контроль для страниц aspx

У меня есть веб-сайт asp.net, и я бы хотел, чтобы клиентский браузер кэшировал вывод HTML страниц aspx после их получения. От чтения я узнал, что IIS7 не поддерживает этот готовый вариант, поэтому я добавил следующий код в событие OnLoad моей главной главной страницы:

protected override void OnLoad(EventArgs e) {
    DateTime dt = DateTime.Now.AddDays(10);
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetExpires(dt);
    Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks));

    base.OnLoad(e);
}

С этим я все еще получаю следующее в заголовке ответа:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Date: Fri, 05 Jul 2013 14:25:03 GMT
Content-Length: 10201

Возможно, я давно что-то сделал, чтобы переопределить это, но я не могу, поскольку жизнь меня помнит, что и что я сделал. Не находить информацию об этом при поиске в Google, заставляет меня думать, что, возможно, cache-control для страниц aspx не очень хорошая идея... но мне это нужно, чтобы облачный (CDN) разрешить доставку всего сайта.

Ответы

Ответ 1

Где-то в конвейере IIS (я еще не знаю, где) не было настроено кеш-заголовков. На моей главной странице, прежде чем устанавливать заголовки кеша, которые я хотел использовать, я добавил следующий код Response.ClearHeaders(); Это может быть не лучшим решением для всех, так как у вас могут быть некоторые заголовки, которые вам нужны в ответе, но в моем случае он сделал трюк.