Sto cercando un riferimento definitivo a quale codice ASP.NET è necessario per disabilitare i browser dalla memorizzazione nella cache della pagina. Esistono molti modi per influenzare le intestazioni HTTP e i metatag e ho l'impressione che siano necessarie impostazioni diverse per fare in modo che browser diversi si comportino correttamente. Sarebbe davvero fantastico avere un bit di riferimento di codice commentato per indicare quale funziona per tutti i browser e quale è richiesto per browser particolari, comprese le versioni.
C'è un'enorme quantità di informazioni su questo problema, ma devo ancora trovare un buon riferimento che descriva i vantaggi di ciascun metodo e se una particolare tecnica sia stata sostituita da un'API di livello superiore.
Sono particolarmente interessato ad ASP.NET 3.5 SP1, ma sarebbe bene ottenere risposte anche per la versione precedente.
Questo articolo di blog Due importanti differenze tra Firefox e IE Caching descrive alcune differenze di comportamento del protocollo HTTP.
Il codice di esempio seguente illustra il tipo di cose che mi interessa
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));
}
}