Mise en cache pour le SEO

Comment la mise en cache du navigateur et du serveur, avec Cache-Control, ETag et les CDN, améliore les performances et les Core Web Vitals, ainsi que les pièges qui affectent l’exploration.

Première publication : 2 juil. 2026 · Dernière mise à jour : 11 août 2026 · Advanced
Langues

La mise en cache conserve une copie d’une page ou d’une ressource dans le navigateur, sur un nœud CDN ou dans le cache du robot afin d’éviter une nouvelle génération ou un nouveau téléchargement. Ce n’est pas un facteur de classement direct, mais elle améliore la vitesse et les Core Web Vitals par le TTFB et le LCP, ainsi que l’efficacité de l’exploration. Googlebot respecte ETag et Last-Modified, avec max-age comme indication facultative de réexploration, et préfère ETag. Les principaux risques sont les mauvaises configurations de CDN et les copies obsolètes qui bloquent ou trompent les robots.

En bref — La mise en cache agit sur trois couches utiles au SEO : navigateur, périphérie du CDN et cache de requêtes conditionnelles propre au robot. Ce n’est pas un facteur de classement, mais elle améliore la vitesse — TTFB, LCP et, via le bfcache, les Core Web Vitals des navigations répétées — ainsi que l’efficacité de l’exploration. Googlebot préfère ETag à Last-Modified, lit max-age seulement comme indication de réexploration et précise que “other HTTP caching directives aren’t supported.” (traduction) « les autres directives de cache HTTP ne sont pas prises en charge ». Les CDN peuvent obtenir un rythme d’exploration supérieur une fois leur cache alimenté ; les vrais risques résident dans les lancements à cache froid et les configurations CDN ou WAF qui bloquent les robots.

Evidence for this claim Google's crawler documentation supports ETag/If-None-Match and Last-Modified/If-Modified-Since, prefers ETag when both are present, and says other HTTP caching directives are unsupported; Google's separate max-age advice is a recrawl-timing hint, not proof it follows browser cache semantics. Scope: Google crawling Confidence: high · Verified: Crawling December: HTTP caching Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching

Les trois couches de cache

Pour le SEO, la mise en cache recouvre trois mécanismes, chacun régi différemment :

  1. Cache du navigateur — l’appareil du visiteur conserve des fichiers afin que les consultations répétées évitent le réseau. C’est ce que PageSpeed Insights contrôle avec « Utiliser des règles de cache efficaces pour les éléments statiques ».
  2. Cache du CDN ou de périphérie — un réseau de diffusion conserve des copies sur des nœuds répartis dans le monde ; l’article approfondi sur les CDN et le SEO détaille ce mécanisme. Google décrit le CDN comme un intermédiaire entre l’origine et l’utilisateur, dont “historically their biggest focus is caching” (traduction) « l’objectif principal a historiquement été la mise en cache » : le contenu d’une URL est conservé pour éviter au serveur de le fournir à nouveau pendant un certain temps.
  3. Cache du robot — Googlebot et Bingbot gardent leur propre indication de modification du contenu grâce aux requêtes conditionnelles. Ce levier agit sur le budget d’exploration ; l’article consacré aux requêtes conditionnelles détaille son fonctionnement.

L’expression « cache du navigateur » englobe plusieurs mécanismes. Le guide MDN de mise en cache HTTP distingue le cache HTTP privé, propre à chaque navigateur, indexé par requête et désormais partitionné par site de premier niveau pour limiter le suivi intersites ; le cache mémoire de la session en cours ; le bfcache décrit plus loin ; et, séparément, le Cache Storage d’un service worker, contrôlé par le JavaScript du site et non directement par Cache-Control. « Vérifier le cache du navigateur » peut donc désigner quatre diagnostics différents.

Effet sur les Core Web Vitals

Récupérer une ressource par le réseau est lent et coûteux. Le cache supprime la latence et le transfert pour tout contenu inchangé. Il améliore ainsi deux mesures liées aux signaux Web essentiels : le TTFB, puisqu’une réponse en cache évite la régénération à l’origine, et le LCP, puisque les images, CSS et polices s’affichent plus tôt.

Les directives Cache-Control importantes

Cache-Control est l’en-tête principal :

  • max-age=<seconds> — durée pendant laquelle une copie reste fraîche. Pour des ressources immuables et versionnées, la documentation Lighthouse de Chrome recommande un an ou davantage, par exemple Cache-Control: max-age=31536000.
  • no-cache — ne signifie pas « ne pas mettre en cache », mais « conserver, puis revalider auprès du serveur avant réutilisation ». Le flux léger 304 reste possible.
  • no-store — interdit réellement de conserver une copie dans un cache HTTP. Il ne constitue pas un mécanisme général de confidentialité : selon RFC 9111, il n’efface pas de façon fiable l’historique du navigateur et ne régit pas le Cache Storage d’un service worker.
  • public / private — autorise un cache partagé, tel qu’un CDN, à conserver la réponse ou limite cette conservation au navigateur de l’utilisateur final.
  • immutable — évite toute revalidation tant que la réponse reste fraîche. Il ne signifie pas « jamais obsolète » : après expiration de max-age, les règles normales s’appliquent.
  • must-revalidate — agit à l’autre extrémité : une fois la réponse obsolète, le cache doit la revalider auprès de l’origine au lieu de servir la copie.
  • s-maxage, stale-while-revalidate, stale-if-error — contrôles plus fins, surtout pour les CDN et caches partagés : fraîcheur propre au cache partagé, réutilisation limitée d’une copie périmée pendant une récupération en arrière-plan ou lors d’une erreur d’origine. Leur prise en charge varie selon les navigateurs et les CDN. Googlebot ne respecte aucune de ces directives supplémentaires.

Invalidation par noms de fichiers versionnés

Pour combiner cache agressif et mise à jour immédiate, placez une empreinte du contenu dans le nom du fichier, par exemple style.x234dff.css. Puisque l’URL sert de clé de cache, modifier le fichier change l’URL : les caches récupèrent aussitôt la nouvelle version tandis que l’ancienne reste conservée. Le guide web.dev sur le cache HTTP et l’article d’ingénierie front-end de Bing décrivent ce modèle. Bing intègre l’empreinte du fichier à l’URL afin que “the URL acts as the cache key,” (traduction) « l’URL serve de clé de cache », ce qui préserve la cohérence et autorise de longues durées d’expiration.

Le piège du bfcache : no-store peut dégrader les CWV

Le cache de navigation arrière/avant, ou bfcache, restaure instantanément une page lorsque l’utilisateur revient en arrière. Cette restauration évite entièrement la mesure de LCP, CLS et INP, ce qui favorise les données terrain CrUX. Le guide Google du bfcache indique toutefois que Cache-Control: no-store sur le document de page a historiquement empêché les navigateurs de le conserver dans le bfcache. Pour garantir la fraîcheur du HTML sans perdre cette admissibilité, préférez no-cache ou max-age=0.

Comment un cache décide si une réponse est assez fraîche

Avant d’utiliser un validateur, le cache vérifie la fraîcheur : l’âge de la réponse dépasse-t-il la durée définie par Cache-Control ou, sans durée explicite, une durée heuristique autorisée ? L’en-tête Age indique depuis combien de temps un cache partagé conserve la réponse ; DevTools ou les journaux CDN permettent ainsi d’estimer la durée restante. Une réponse fraîche est réutilisée immédiatement sans requête. Une réponse obsolète doit être validée avant réutilisation : c’est là qu’interviennent ETag avec If-None-Match, et Last-Modified avec If-Modified-Since.

Utilisation du cache par Googlebot

Dans son article de décembre 2024 Série « Crawling December » : mise en cache HTTP, Google demande explicitement d’activer la mise en cache afin que ses robots évitent de télécharger à nouveau les pages inchangées. Le constat marquant est le recul des récupérations pouvant être servies depuis le cache : environ 0,026 % il y a dix ans, contre 0,017 % aujourd’hui. La source fournit le détail de cette évolution. Les chiffres sont faibles, mais Google souhaite clairement inverser la tendance.

ETag ou Last-Modified : préférence de Google

L’infrastructure d’exploration de Google accepte les deux validateurs standards : ETag, avec If-None-Match, et Last-Modified, avec If-Modified-Since. Google “strongly recommends ETag” (traduction) « recommande vivement ETag », car sa valeur non structurée est moins exposée aux erreurs d’analyse qu’une date. Lorsque les deux en-têtes sont présents, ses robots “use the ETag value” (traduction) « utilisent la valeur ETag », conformément au standard HTTP. Google conseille néanmoins de définir les deux, car d’autres applications telles que les CMS les utilisent. Avec Last-Modified, la date doit respecter le format HTTP, par exemple Fri, 4 Sep 1998 19:15:56 GMT.

Lorsque le validateur conservé par le robot correspond toujours, le serveur renvoie 304 Not Modified sans corps de réponse. C’est précisément l’objectif : selon Google, l’absence de corps évite au serveur le calcul nécessaire à la génération du contenu et économise la bande passante du transfert. L’article sur les requêtes conditionnelles détaille ce mécanisme ; ici, retenez qu’il réduit le coût des deux côtés.

Une nuance souvent ignorée

Googlebot ne suit pas l’ensemble des directives Cache-Control comme le ferait un navigateur ou un CDN. Au-delà d’ETag et de Last-Modified, la présentation officielle des robots précise : “other HTTP caching directives aren’t supported.” (traduction) « les autres directives de cache HTTP ne sont pas prises en charge ». Seule exception partielle : Google indique que max-age peut facultativement aider les robots à déterminer le moment de la réexploration. Il s’agit d’une indication, pas d’un verrou. no-cache, s-maxage, stale-while-revalidate et les directives proches continuent de régir le navigateur et le CDN, mais ne modifient pas le cache de Googlebot. Google recommande de forcer une actualisation lors des changements importants ; la seule modification de l’année du copyright dans le pied de page n’en est pas une.

CDN et exploration

Un CDN n’apporte pas uniquement de la vitesse. L’infrastructure de Google est conçue pour autoriser un rythme d’exploration supérieur sur les sites servis par un CDN, détecté à partir de l’adresse IP qui sert les URL ; Google suppose que l’origine adossée à un CDN supporte davantage de requêtes simultanées.

Il faut cependant anticiper le cache froid. Au premier accès à une URL, le cache du CDN est « froid » : personne ne l’a encore demandée et l’origine doit la servir au moins une fois pour alimenter le cache. Google avertit qu’un lancement simultané de nombreuses URL pèse réellement sur le budget d’exploration, avec un rythme élevé pendant quelques jours. Lors d’un lancement important ou d’une migration, prévoyez que l’origine absorbe la charge complète de chaque URL avant que le CDN ne prenne le relais.

Une mauvaise configuration du CDN menace l’exploration

Les problèmes les plus dangereux ne sont pas des durées trop lentes, mais les règles CDN et WAF qui bloquent les robots. Google recommande, pour un blocage temporaire, d’envoyer un code 503 ou 429. Un délai d’attente réseau est au contraire traité comme une erreur définitive, susceptible de faire retirer les URL de l’index. Plus discret, le blocage souple prend la forme d’un interstitiel de vérification : le robot ne voit que la page de défi. Google recommande vivement de renvoyer un code 503 aux clients automatisés. Pour vérifier facilement le fonctionnement, utilisez l’inspection d’URL de Search Console : si l’image rendue montre un défi anti-robot ou une page vide, contactez votre fournisseur CDN.

J’apprécie le déplacement des redirections vers le CDN. Dans le podcast Marketing Speak, je l’ai décrit ainsi : “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (traduction) « L’une de mes techniques préférées, encore trop peu utilisée, consiste à déporter les redirections au niveau du CDN. » (Accéder à la citation)

Pièges qui nuisent à l’exploration et à l’indexation

De nombreux articles omettent ce point : un cache n’accélère pas seulement les réponses. Une mauvaise copie peut fournir les mauvais octets au robot et compromettre l’exploration ou l’indexation.

Cas réel : un cache partagé sert un robots.txt bloquant. Une situation de blocage intermittent de Googlebot provenait d’un cache CDN partagé entre un environnement de test et le site actif. Dans Indexed, though blocked by robots.txt, j’écrivais : “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.” (traduction) « Une cause possible tient au partage d’un même cache entre la préproduction et le site actif ; lorsque la copie de test prévaut, robots.txt risque alors de contenir une règle interdisant l’exploration. » La correction consistait à séparer les caches ou à exclure les fichiers .txt du cache de test. La mauvaise configuration a directement provoqué un échec d’exploration.

Autres pièges de la même famille :

  • Copie CDN obsolète servie aux robots. Si le nœud périphérique conserve une ancienne version longtemps après publication, les robots continuent de la voir. Purgez à la publication ou adaptez la durée à la fréquence réelle des changements.
  • Fragmentation par Vary ou User-Agent. La clé d’un cache partagé est généralement l’URL ; Vary y ajoute des en-têtes de requête tels que User-Agent ou Accept-Language afin de séparer les variantes. Omettre une dimension réellement variable peut servir à un demandeur la réponse d’un autre, par exemple mobile contre ordinateur ou robot contre humain. Ajouter trop d’en-têtes produit tant de clés presque identiques que le taux de succès chute. Les navigateurs modernes partitionnent aussi leur propre cache par site de premier niveau pour la confidentialité : une ressource mise en cache lorsqu’elle est intégrée à un site n’est généralement pas réutilisée sur un autre. Ce mécanisme diffère de Vary.

Ma règle générale sur la durée vient du travail sur le LCP. Dans mon guide Ahrefs, je l’écrivais ainsi : “Your cache time should be as long as you are comfortable with” (traduction) « La durée du cache devrait être aussi longue que vous le jugez acceptable » (accéder à la source), et “An ideal setup is to cache for a really long period of time but purge the cache when you make a change to a page.” (traduction) « La configuration idéale consiste à conserver longtemps les réponses, puis à purger le cache lors d’une modification de page ». Cache long, purge immédiate : cette combinaison préserve vitesse et fraîcheur.

La mise en cache est-elle un facteur de classement ?

Non, pas directement. Aucun signal de classement ne récompense la présence d’ETag ou une bonne règle Cache-Control. Le cache améliore plutôt deux éléments qui comptent pour la visibilité : la vitesse et les Core Web Vitals, qui participent à l’expérience sur la page, ainsi que l’efficacité d’exploration, qui détermine la rapidité de découverte et d’actualisation du contenu. Configurez-le pour rendre le site rapide et facile à explorer, pas pour obtenir un gain direct de positions.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.