Установить кеш-контроль для страниц 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();
Это может быть не лучшим решением для всех, так как у вас могут быть некоторые заголовки, которые вам нужны в ответе, но в моем случае он сделал трюк.