Estoy buscando una referencia definitiva a qué código ASP.NET se requiere para que los navegadores deshabiliten el almacenamiento en caché de la página. Hay muchas formas de afectar los encabezados HTTP y las metaetiquetas y tengo la impresión de que se requieren diferentes configuraciones para que los diferentes navegadores se comporten correctamente. Sería realmente bueno que se comentara un fragmento de código de referencia para indicar cuál funciona para todos los navegadores y cuál es necesario para un navegador en particular, incluidas las versiones.
Hay una gran cantidad de información sobre este tema, pero todavía tengo que encontrar una buena referencia que describa los beneficios de cada método y si una técnica en particular ha sido reemplazada por una API de nivel superior.
Estoy particularmente interesado en ASP.NET 3.5 SP1, pero también sería bueno obtener respuestas para la versión anterior.
Esta entrada de blog Dos diferencias importantes entre el almacenamiento en caché de Firefox e IE describe algunas diferencias de comportamiento del protocolo HTTP.
El siguiente código de muestra ilustra el tipo de cosas que me interesan
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));
}
}