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