Alertes de sécurité en cours Discussion Discussion
Faire un lien Lien
Assiste.com - Sécurité informatique - Décontamination - Antivirus - Protection - Protection de la Vie Privée Assiste.com - Sécurité informatique - Décontamination - Antivirus - Protection - Protection de la Vie Privée


Comment connaître la date d'expiration des pages Web en cache dans un navigateur ?

Dernière mise à jour : 2017-02-01T00:00 - 01.02.2017 - 00h00
13.02.2016 - 00h00 - Paris - (Assiste - Pierre Pinard) - Ajout lien vers la page « Principe d’anticipation »

Le "cache" (la "mise en cache") est un dispositif accélérateur (disques durs, mémoire etc. ...). Sur l'Internet et les navigateurs, ce dispositif accélère la vitesse de consultation et soulage la bande passante et les serveurs. Mais ce dispositif a un effet pervers.

Comment connaître la date d'expiration des pages en cache dans le navigateur ? - Lien permanentDate d'expiration des pages Web en cache dans le navigateur ?Comment connaître la date d'expiration des pages en cache dans le navigateur ?

Le principe d'anticipation

met en cache

mais cache...

Oui, bon... c'est quoi ce charabia ?

Il existe un problème irritant avec les sites vivants dont les pages, dites "statiques", sont mises à jour plusieurs fois par jour, voire par heure (mises à jour, corrections, compléments, nouvelles versions de logiciels etc. ...) : ces mises à jour sont, parfois, invisibles aux internautes qui, s'ils ont déjà visité les pages en question, ne voient pas les mises à jour.

En fait, c'est un problème lié aux « caches » des navigateurs Internet utilisés (Firefox, Microsoft Internet Explorer, Microsoft Edge, Opera, Google Chrome, Safari, K-Meleon, etc. ...) et d'une (non) disposition d'un cache côté serveur.

Je vais reprendre ici une explication très parlante du fonctionnement de la mise en cache qu'à faite Jules-F dans l'excellent forum d'Alsacréaton, ici.

Les dialogues entre un navigateur et un serveur web peuvent prendre de nombreuses formes en fonction des entêtes envoyés par chacun.

Pour faire simple, lors de la première demande d’accès à une ressource, on peut avoir un dialogue du genre :

– navigateur : bonjour serveur, je voudrais la ressource « exemple.html »
– serveur web : hé, salut navigateur, aucun problème, voilà la ressource en question.

Dans cet exemple, le navigateur envoi des entêtes pour demander la page et le serveur renvoi le contenu de la page mais également diverses informations dans les entêtes.

Note d'Assiste
Le navigateur Internet utilisé (Firefox, Microsoft Internet Explorer, Microsoft Edge, Opera, Google Chrome, Safari, K-Meleon, etc. ..., le « Client » dans la relation « Client » / « Serveur » qu'est le Web), affiche le contenu, que le visiteur peut donc voir, mais il en garde une copie dans un fichier, sur le disque dur local. Cette zone, contenant toutes les copies de cette nature, est appelée « Cache » (rien à voir avec quelque chose de caché - il s'agit d'un mécanisme accélérateur relevant du « Principe d’anticipation ».

Il peut par exemple envoyer la date de modification du fichier ou un numéro de version et là, la prochaine fois que le navigateur demandera la page, le dialogue ressemblera à :

– navigateur : je demande la page « exemple.html » et j’ai la version du 22 avril (ou la version 238ABF7292)
– serveur : j'ai pas de version plus récente !

Dans ce cas, le navigateur demande la page mais indique également la version qu'il a en cache et si le serveur n’a pas une version plus récente alors il ne renvoie que les entêtes pour dire : ok utilise ta version en cache, j'ai pas mieux (il renvoie un code 304 Not Modified). C’est plus rapide car le contenu de la page n’est pas envoyé.

Mais il existe un autre cas possible encore plus rapide. Les développeurs ou administrateurs le mettent souvent en place histoire d'optimiser au maximum les temps de chargement et éviter les dialogues entre navigateur et serveur web.

– navigateur : salut, je demande la page « exemple.html »
– serveur web : ¡Hola, OK là voila et garde la pendant 1 mois

Là encore, le navigateur demande une ressource. Le serveur web la lui envoie mais lui précise, avec les entêtes « Expires » ou « Cache-Control », qu’elle sera valide pendant 1 mois. Le serveur indique de la sorte une date d'expiration (de péremption) de validité. La prochaine fois que le navigateur aura besoin de cette page, il ne la demandera même plus au serveur, il n'y a plus aucun dialogue : c’est bien plus rapide.

Ce genre de chose est très souvent utilisé pour les fichiers statiques...

Note d'Assiste
C'est une astuce des développeurs pour préserver la charge des serveurs et la bande passante.

Date d'Expiration dans le Cache navigateur - solution Webmaster côté client (navigateur) - Lien permanentDate d'Expiration dans le Cache navigateur - Solution Webmaster (côté client) Date d'Expiration dans le Cache navigateur - solution Webmaster côté client (navigateur)

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="EXPIRES" content="0">

Attention : la réaction à cette inscription dans le header des pages n'aura d'effet que dans quelques heures à quelques jours, le temps que le contenu actuel dans le cache, chez les visiteurs, soit devenu périmé !

On peut voir aisément ceci dans la navigateur Firefox avec la commande (à saisir dans la zone d'adresse) :
about:cache?device=disk

Voici un exemple où l'on peut voir des ressources mises en cache avec des dates d'expiration systématiquement périmées (1970) ou une validité de quelques jours ou une année, voire 10 ans.

Exemples de dates d'expiration de diverses ressources dans le cache de Firefox
Exemples de dates d'expiration de diverses ressources dans le cache de Firefox

Donc, si vous avec un doute sur la version d'une page que vous voyez dans votre navigateur Web, assurez-vous d'avoir la bonne, la dernière version de la page consultée :

Côté serveurs d'hébergement aussi, il y a des caches :

  • Certains fournisseurs d'hébergements protègent d'eux-mêmes leurs serveurs en utilisant des serveurs frontaux qui gèrent des caches côté serveur. Tant que les ressources ne sont pas mises à jour sur les serveurs, ce sont les frontaux qui servent la réponse aux demandeurs (les internautes). Lorsque la ressource est mise à jour par le développeur / webmaster, le cache est mis à jour côté frontaux des data-centers.
  • Certains autres hébergeurs n'implémentent pas de cache et servent toujours la dernière version.