Comment faire pour empêcher la mise en cache dans Internet Explorer

Traductions disponibles Traductions disponibles
Numéro d'article: 234067 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F234067
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique l'utilisation d'en-têtes HTTP pour contrôler la mise en cache de pages Web dans Internet Explorer.

Vous pouvez utiliser Microsoft Internet Information Server (IIS) pour marquer facilement des pages très volatiles ou confidentielles à l'aide du script suivant au tout début des pages ASP (Active Server Pages) :
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Plus d'informations

Expiration et en-tête d'expiration

Il est fortement recommandé que tous les serveurs Web utilisent une méthode pour l'expiration de toutes les pages Web. Il est déconseillé qu'un serveur Web ne fournisse pas d'informations concernant l'expiration, par l'intermédiaire de l'en-tête HTTP d'expiration de réponse, pour toutes les ressources renvoyées aux clients demandeurs. Aujourd'hui, la plupart des navigateurs et des serveurs proxy respectent ces informations relatives à l'expiration et les utilisent pour augmenter l'efficacité des communications sur le réseau.

L'en-tête d'expiration devrait toujours être utilisé pour spécifier le moment le plus raisonnable auquel un fichier particulier sur le serveur a besoin d'être mis à jour par le client. Lorsque des pages sont régulièrement mises à jour, la période suivante de mise à jour est la réponse la plus efficace. Prenons l'exemple d'une page d'informations quotidienne sur Internet qui est mise à jour quotidiennement à 5h00. Le serveur Web de cette page d'informations doit renvoyer un en-tête d'expiration avec une valeur pour 5h00 le lendemain. Lorsque tel est le cas, le navigateur n'a pas besoin de contacter à nouveau le serveur Web tant que la page n'a pas changé.

Les pages qui ne sont pas supposées changer devraient être marquées avec un délai d'expiration d'environ un an.

Dans de nombreux cas, les serveurs Web ont au moins une page volatile sur un serveur contenant des informations qui sont susceptibles d'être modifiées immédiatement. Ces pages devraient être identifiées en tant que telles par le serveur avec la valeur « -1 » pour l'en-tête d'expiration. Lors de requêtes futures de l'utilisateur, Internet Explorer contacte généralement le serveur Web pour obtenir des mises à jour de cette page grâce à une requête conditionnelle Si modifiée depuis. Toutefois, la page reste dans le cache du disque (« fichiers Internet temporaires »). Elle est utilisée dans les situations appropriées, sans que le serveur Web distant soit contacté, par exemple lors de l'utilisation des boutons PRÉCÉDENTE et SUIVANTE pour accéder à l'historique de navigation ou lorsque le navigateur est en mode hors connexion.

L'en-tête de contrôle du cache

Cependant, certaines pages sont tellement volatiles ou confidentielles qu'elles ne nécessitent pas de mise en cache disque. Pour cette raison, Internet Explorer prend en charge l'en-tête HTTP 1.1 de contrôle du cache, ce qui empêche toute mise en cache d'une ressource Web particulière lorsque la valeur « no-cache » est spécifiée par un serveur HTTP 1.1.

Les pages non mises en cache n'étant pas accessibles tant que le navigateur ne peut pas recontacter le serveur Web, les serveurs doivent utiliser l'en-tête de contrôle du cache avec parcimonie. Dans la plupart des cas, l'utilisation de « Expires: -1 » est privilégiée.

L'en-tête Pragma: No-Cache

Malheureusement, les serveurs hérités de HTTP 1.0 ne peuvent pas utiliser l'en-tête de contrôle du cache. Pour des raisons de compatibilité ascendante avec les serveurs HTTP 1.0, Internet Explorer prend en charge une utilisation particulière de l'en-tête HTTP Pragma: no-cache. Si le client communique avec le serveur sur une connexion sécurisée (https://) et que le serveur retourne un en-tête Pragma: no-cache avec la réponse, Internet Explorer ne met pas en cache la réponse.

Notez toutefois que l'en-tête Pragma: no-cache n'a pas été prévu pour cela. Selon les spécifications HTTP 1.0 et 1.1, cet en-tête est défini uniquement dans un contexte de requête, pas de réponse, et il s'adresse aux serveurs proxy qui peuvent empêcher certaines requêtes importantes d'atteindre le serveur Web de destination. Pour des applications à venir, l'en-tête de contrôle du cache est le moyen le plus adapté pour contrôler la mise en cache.

Balises HTTP-EQUIV META

Les pages HTML permettent d'utiliser une forme HTTP-EQUIV particulière de la balise META qui spécifie des en-têtes HTTP particuliers provenant du document HTML. Voici une courte page HTML d'exemple, qui utilise les deux instructions Pragma: no-cache et Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Pragma: no-cache empêche la mise en cache uniquement en cas d'utilisation sur une connexion sécurisée. Une balise Pragma: no-cache META est traitée de la même façon que Expires: -1 si elle est utilisée dans une page non sécurisée. La page sera mise en cache, mais marquée comme expirant immédiatement.

Les balises META HTTP-EQUIV de contrôle du cache sont ignorées et n'ont aucun effet dans Internet Explorer versions 4 ou 5. Pour utiliser le contrôle du cache, cet en-tête doit être spécifié à l'aide d'en-têtes HTTP, comme décrit dans la section concernant le contrôle du cache ci-dessus.

Notez que l'utilisation d'en-têtes HTTP standard est privilégiée par rapport à celle des balises META. Les balises META doivent apparaître en général en haut de la section HTML HEAD. Il existe au moins un problème connu avec la balise Pragma HTTP-EQUIV META. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant de la Base de connaissances Microsoft.
222064 La balise « Pragma: no-cache » n'empêche pas toujours la mise en cache de pages
Options du serveur pour la mise en cache Lorsque l'en-tête de contrôle du cache doit être utilisé sur des pages autres qu'ASP, il peut être nécessaire d'utiliser des options dans la configuration serveur pour ajouter automatiquement cet en-tête. Reportez-vous à votre documentation serveur pour le processus d'ajout d'en-têtes HTTP aux réponses des serveurs pour un annuaire particulier. Par exemple, dans IIS 4, procédez comme suit :
  • Appelez le Gestionnaire des services Internet.
  • À l'aide de l'arborescence de l'ordinateur et des services, ouvrez le serveur Web par défaut (ou le serveur Web en question) et recherchez le répertoire dont le contenu nécessite l'en-tête de contrôle du cache.
  • Affichez la boîte de dialogue Propriétés pour ce répertoire.
  • Cliquez sur l'onglet En-têtes HTTP.
  • Cliquez sur le bouton Ajouter dans le groupe En-têtes HTTP personnalisés et ajoutez « Cache-Control » pour le nom de l'en-tête et « no-cache » pour la valeur de l'en-tête.
N'oubliez pas qu'il n'est pas conseillé d'utiliser cet en-tête de manière globale sur tout le serveur Web. Réservez son utilisation exclusivement au contenu qui ne doit absolument pas être mis en cache sur le client. Liste de contrôle des problèmes Si vous avez mis en application les procédures décrites dans cet article et que vous rencontrez toujours des problèmes avec la mise en cache et Internet Explorer, consultez cette liste de vérification pratique étape par étape, avant de contacter Microsoft pour obtenir une assistance technique :
  • Utilisez-vous l'en-tête de contrôle du cache avec la propriété ASP « Response.CacheControl » ou par l'intermédiaire d'un en-tête HTTP renvoyé ? C'est la seule façon d'empêcher véritablement la mise en cache dans Internet Explorer.
  • Utilisez-vous Internet Explorer 4.01 Service Pack 2 ou ultérieur ? Il est impossible d'empêcher totalement la mise en cache dans les versions antérieures du navigateur.
  • Avez-vous vérifié si la propriété HTTP 1.1 de votre serveur Web est réellement activée et renvoie des réponses HTTP 1.1 à Internet Explorer ? Les en-têtes de contrôle du cache ne sont pas valides dans les réponses HTTP 1.0.
  • Si vous utilisez CGI/ISAPI/Servlets côté serveur, respectez-vous scrupuleusement les spécifications HTTP 1.1, particulièrement en ce qui concerne les interruptions CRLF des en-têtes HTTP ? Pour des raisons de performance, Internet Explorer ne prend généralement pas en compte les réponses qui ne respectent pas les spécifications HTTP 1.1. Ceci se traduit habituellement par des en-têtes ignorés ou des rapports d'erreurs de serveur inattendues.
  • Les en-têtes HTTP sont-ils orthographiés correctement ?

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants de la Base de connaissances Microsoft.
189409 Contrôle de la mise en cache de pages Web avec IIS 4.0
165150 Mode d'emploi de Pragma: No-cache avec IIS et Internet Explorer
Pour plus d'informations sur HTTP/1.1, reportez-vous au site Web à l'adresse suivante (en anglais) pour obtenir le RFC 2616 :
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Propriétés

Numéro d'article: 234067 - Dernière mise à jour: mardi 22 novembre 2005 - Version: 4.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Explorer 4.0 Édition 128 bits
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Explorer 6.0 Service Pack 1
Mots-clés : 
kbhowto kbcaching kbfaq KB234067
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com