Estou atrás de uma referência definitiva a qual código ASP.NET é necessário para que os navegadores desabilitem o cache da página. Existem muitas maneiras de afetar os cabeçalhos HTTP e metatags e tenho a impressão de que diferentes configurações são necessárias para fazer com que navegadores diferentes se comportem corretamente. Seria muito bom ter um pedaço de código de referência comentado para indicar o que funciona para todos os navegadores e o que é necessário para um navegador específico, incluindo versões.
Há uma grande quantidade de informações sobre esse problema, mas ainda não encontrei uma boa referência que descreva os benefícios de cada método e se uma técnica específica foi substituída por uma API de nível superior.
Estou particularmente interessado no ASP.NET 3.5 SP1, mas seria bom obter respostas para a versão anterior também.
Esta entrada do blog Duas diferenças importantes entre o cache do Firefox e do IE descreve algumas diferenças de comportamento do protocolo HTTP.
O código de exemplo a seguir ilustra o tipo de coisa em que estou interessado
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));
}
}