Je suis à la recherche d'une référence définitive au code ASP.NET requis pour désactiver la mise en cache de la page par les navigateurs. Il existe de nombreuses façons d'affecter les en-têtes HTTP et les balises méta et j'ai l'impression que différents paramètres sont nécessaires pour que différents navigateurs se comportent correctement. Ce serait vraiment génial d'obtenir un morceau de code de référence commenté pour indiquer ce qui fonctionne pour tous les navigateurs et ce qui est requis pour un navigateur particulier, y compris les versions.
Il existe une énorme quantité d'informations sur ce problème, mais je n'ai pas encore trouvé de bonne référence décrivant les avantages de chaque méthode et indiquant si une technique particulière a été remplacée par une API de niveau supérieur.
Je suis particulièrement intéressé par ASP.NET 3.5 SP1, mais il serait également bon d'obtenir des réponses pour la version antérieure.
Cette entrée de blog Deux différences importantes entre Firefox et la mise en cache IE décrit certaines différences de comportement du protocole HTTP.
L'exemple de code suivant illustre le genre de chose qui m'intéresse
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));
}
}