IIS7: set “no-cache” pour toutes les pages aspx, mais pas les images/css/js
Je voudrais pas mettre en cache mon aspx pages de n'importe où. Pour une raison que IE ignore les balises meta sont définies à partir de ma page principale
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
Je suis en train de voir si je peux mettre ma tête de réponse Http à "Cache-Control" - "no-cache". Mettre quelque chose comme
HttpContext.Current.Response.Headers.Add("Cache-Control", "no-cache");
HttpContext.Current.Response.Headers.Add("Exipres", DateTime.Now.AddDays(-1).ToShortDateString());
dans chaque page serait douloureux. Je pense que si il est de toute façon on peut le régler dans IIS7 (ajouter cet en-tête pour les pages aspx, mais pas les images/css/js). Est-il possible ?
Edit: Comme par suggestion dans http://technet.microsoft.com/en-us/library/cc753133%28WS.10%29.aspx, l'ajout d'un personnalisé-tête de réponse http ajoute l'en-tête de tous les fichiers, y compris js,css,images. Ainsi, l'ajout de "Cache-Control","no-cache" ici ne fonctionne pas, soit
Edit2: je pense à propos de l'ajout d'un httpmodule . Quelque chose de semblable à http://blogs.technet.com/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx. Des suggestions ?
Vous devez vous connecter pour publier un commentaire.
http://technet.microsoft.com/en-us/library/cc770661(WS.10).aspx
Par défaut, IIS seulement les caches de contenu statique; vous aurez à faire des ajustements si elle est mise en cache des non-contenu statique déjà.
Si vous utilisez une MasterPage pour votre site, vous pouvez envisager l'ajout de l'en-tête de réponse à son événement Page_Load:
Depuis votre .js fichier(s) à ne pas utiliser la MasterPage, le navigateur doit sauver la référence à son cache.
L'exemple ci-dessus est ce que j'utilise et il fonctionne bien sous Firefox3, IE7, et Chrome7. Notez que l'en-tête de réponse ci-dessus est la seule chose que j'ai ajouté pour le contrôle de la mémoire cache et il fait le travail. Cependant, je vois souvent des
Pragma
etExpires
en-têtes de réponse sur d'autres sites web.Par exemple, voici les en-têtes de réponse qui sont utilisés dans Gmail:
Je ne suis pas sûr si ceux-ci sont utilisées pour les anciens navigateurs et/ou d'autres navigateurs plus récents.
Je préfère mettre en oeuvre le montant minimum de code pour résoudre un problème et je n'ai jamais (encore) eu un cas où le
Response.AddHeader
indiqué en haut n'était pas suffisant.Un absolument certaine façon de garder n'importe quel navigateur de mise en cache de votre page serait l'ajout d'une variable de chaîne de requête définie sur un nombre aléatoire, de sorte que vos liens se termine toujours en "?ran=". Je l'ai fait sur une base limitée dans le passé.