Я шукаю остаточне посилання на те, який код ASP.NET потрібен для вимкнених браузерів з кешування сторінки. Є багато способів вплинути на заголовки HTTP і мета-теги, і я створюю враження, що для правильної поведінки різних браузерів потрібні різні налаштування. Було б дуже здорово отримати посилальний біт коду, коментований, щоб вказати, який працює для всіх браузерів, а який необхідний для певного браузера, включаючи версії.
Існує величезна кількість інформації про цю проблему, але я ще не знайшов хорошого довідкового матеріалу, який би описував переваги кожного методу та те, чи певна техніка була замінена API вищого рівня.
Мене особливо цікавить ASP.NET 3.5 SP1, але було б непогано отримати відповіді і на попередні версії.
Цей запис у блозі Дві важливі відмінності між Firefox та кешуванням IE описує деякі відмінності поведінки протоколу HTTP.
Наступний зразок коду ілюструє те, що мене цікавить
public abstract class NoCacheBasePage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DisableClientCaching();
}
private void DisableClientCaching()
{
// Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
// HTTP Headers or both?
// Does this only work for IE?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Is this required for FireFox? Would be good to do this without magic strings.
// Won't it overwrite the previous setting
Response.Headers.Add("Cache-Control", "no-cache, no-store");
// Why is it necessary to explicitly call SetExpires. Presume it is still better than calling
// Response.Headers.Add( directly
Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-1));
}
}