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

Другие вопросы по тегам