Мне нужно дать исчерпывающую ссылку на то, какой код ASP.NET требуется для отключения браузеров от кеширования страницы. Есть много способов повлиять на HTTP-заголовки и метатеги, и у меня создается впечатление, что для правильной работы разных браузеров требуются разные настройки. Было бы здорово получить отрывок кода с комментариями, чтобы указать, какой из них работает для всех браузеров, а какой требуется для конкретного браузера, включая версии.
Там есть огромное количество информации об этой проблеме, но мне еще предстоит найти хорошую ссылку, в которой описаны преимущества каждого метода и был ли конкретный метод заменен API более высокого уровня.
Меня особенно интересует ASP.NET 3.5 SP1, но было бы неплохо получить ответы и для более ранней версии.
В этой записи блога « Два важных различия между Firefox и IE Caching» описаны некоторые различия в поведении протокола 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));
}
}