Ich bin nach einem endgültigen Verweis darauf, welcher ASP.NET-Code erforderlich ist, damit Browser die Seite nicht zwischenspeichern können. Es gibt viele Möglichkeiten, die HTTP-Header und Meta-Tags zu beeinflussen, und ich habe den Eindruck, dass unterschiedliche Einstellungen erforderlich sind, damit sich verschiedene Browser korrekt verhalten. Es wäre wirklich großartig, wenn ein Referenzcode-Code kommentiert würde, um anzugeben, welcher für alle Browser funktioniert und welcher für einen bestimmten Browser, einschließlich Versionen, erforderlich ist.
Es gibt dort eine große Menge an Informationen zu diesem Problem, aber ich habe noch keine gute Referenz gefunden, die die Vorteile jeder Methode beschreibt und ob eine bestimmte Technik durch eine übergeordnete API ersetzt wurde.
Ich interessiere mich besonders für ASP.NET 3.5 SP1, aber es wäre gut, auch Antworten für frühere Versionen zu erhalten.
Dieser Blogeintrag Zwei wichtige Unterschiede zwischen Firefox und IE Caching beschreibt einige Unterschiede im Verhalten des HTTP-Protokolls.
Der folgende Beispielcode zeigt, woran ich interessiert bin
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));
}
}