Que dit Google sur le SEO ? /

Declaration officielle

Google met en cache les ressources récupérées depuis des APIs de la même manière que les autres ressources, si elles utilisent la méthode GET. Cependant, les requêtes POST ne sont pas mises en cache.
31:36
🎥 Vidéo source

Extrait d'une vidéo Google Search Central

⏱ 46:02 💬 EN 📅 25/11/2020 ✂ 29 déclarations
Voir sur YouTube (31:36) →
Autres déclarations de cette vidéo 28
  1. 1:02 Google rend-il vraiment toutes les pages JavaScript, quelle que soit leur architecture ?
  2. 1:02 Google rend-il vraiment TOUT le JavaScript, même sans contenu initial server-side ?
  3. 2:05 Comment vérifier que Googlebot crawle vraiment votre site ?
  4. 2:05 Comment vérifier que Googlebot est vraiment Googlebot et pas un imposteur ?
  5. 2:36 Google limite-t-il vraiment le temps CPU lors du rendu JavaScript ?
  6. 2:36 Google limite-t-il vraiment le temps CPU lors du rendu JavaScript ?
  7. 3:09 Faut-il arrêter d'optimiser pour les bots et se concentrer uniquement sur l'utilisateur ?
  8. 5:17 La propriété CSS content-visibility impacte-t-elle le rendu dans Google ?
  9. 8:53 Comment mesurer les Core Web Vitals sur Firefox et Safari sans API native ?
  10. 11:00 Combien de temps Google attend-il vraiment avant d'abandonner le rendu JavaScript ?
  11. 11:00 Combien de temps Googlebot attend-il vraiment pour le rendu JavaScript ?
  12. 20:07 Pourquoi Google affiche-t-il des pages vides alors que votre site JavaScript fonctionne parfaitement ?
  13. 20:07 AJAX fonctionne en SEO, mais faut-il vraiment l'utiliser ?
  14. 21:10 Le JavaScript bloquant peut-il vraiment empêcher Google d'indexer tout le contenu de vos pages ?
  15. 24:48 Le prérendu dynamique est-il devenu un piège pour l'indexation ?
  16. 26:25 Pourquoi vos ressources supprimées peuvent-elles détruire votre indexation en prérendu ?
  17. 26:47 Que fait vraiment Google avec votre HTML initial avant le rendu JavaScript ?
  18. 27:28 Google analyse-t-il vraiment tout dans le HTML initial avant le rendu ?
  19. 27:59 Pourquoi Google ignore-t-il le rendu JavaScript si votre balise noindex apparaît dans le HTML initial ?
  20. 27:59 Pourquoi une page 404 avec JavaScript peut-elle faire désindexer tout votre site ?
  21. 28:30 Pourquoi Google refuse-t-il de rendre le JavaScript si le HTML initial contient un meta noindex ?
  22. 30:00 Google compare-t-il vraiment le HTML initial ET rendu pour la canonicalisation ?
  23. 30:01 Google détecte-t-il vraiment le duplicate content après le rendu JavaScript ?
  24. 31:36 Google cache-t-il vraiment les requêtes POST lors du rendu JavaScript ?
  25. 34:47 Est-ce que Google indexe vraiment toutes les pages après rendu JavaScript ?
  26. 35:19 Google rend-il vraiment 100% des pages JavaScript avant indexation ?
  27. 36:51 Pourquoi vos APIs défaillantes sabotent-elles votre indexation Google ?
  28. 37:12 Les données structurées sur pages noindex sont-elles vraiment perdues pour Google ?
📅
Declaration officielle du (il y a 5 ans)
TL;DR

Google met en cache les réponses d'APIs récupérées via GET exactement comme n'importe quelle ressource statique — images, CSS, JavaScript. En revanche, les requêtes POST échappent systématiquement à la mise en cache. Pour un SEO, cela signifie qu'un contenu critique chargé dynamiquement via GET peut devenir obsolète si les headers de cache ne sont pas maîtrisés. La distinction GET/POST n'est pas anodine : elle conditionne directement ce que Googlebot voit et indexe.

Ce qu'il faut comprendre

Pourquoi cette distinction entre GET et POST est-elle cruciale pour le crawl ?

Googlebot traite les requêtes GET comme des demandes de récupération de contenu stable. C'est le principe même du web sémantique : GET = lecture, POST = écriture ou action. Quand un bot crawle une URL, il s'attend à ce qu'une requête GET renvoie toujours le même contenu pour les mêmes paramètres.

La mise en cache repose sur ce postulat. Si une API répond via GET, Google applique les mêmes règles qu'à une image ou un script : il stocke la réponse en fonction des headers HTTP (Cache-Control, Expires, ETag). Une requête POST, par nature, modifie un état côté serveur — impossible de la cacher sans risquer d'incohérence.

Concrètement, qu'est-ce qui change pour un site qui charge du contenu via API ?

Un site e-commerce qui affiche des prix ou des stocks via une API GET peut voir Googlebot servir des données périmées si les headers de cache sont trop généreux. Le bot lit ce qu'il a en mémoire, pas l'état réel du catalogue.

À l'inverse, un site qui utilise POST pour récupérer du contenu critique — une pratique absurde mais vue sur le terrain — garantit que Google ne mettra jamais cette ressource en cache. Résultat : le contenu peut tout simplement ne pas être indexé si le bot ne peut pas le récupérer de manière fiable.

Les headers HTTP deviennent-ils un enjeu stratégique ?

Absolument. Google respecte scrupuleusement Cache-Control: no-cache, must-revalidate, et les directives d'expiration. Si une API renvoie un max-age=86400 (24h), le bot ne repassera pas avant ce délai, même si le contenu a changé entre-temps.

La différence entre un cache serveur et un cache bot est ténue mais critique. Le premier optimise la charge, le second conditionne ce que Google indexe. Un header mal configuré peut figer une version obsolète dans l'index pendant des jours.

  • GET = mise en cache automatique si les headers HTTP l'autorisent
  • POST = jamais mis en cache, même avec des headers favorables
  • Les headers Cache-Control définissent la durée de vie d'une réponse GET dans le cache de Google
  • Un contenu critique chargé via GET avec un max-age trop long peut devenir obsolète dans l'index
  • Utiliser POST pour du contenu public destiné à l'indexation est une erreur technique majeure

Avis d'un expert SEO

Cette déclaration est-elle cohérente avec les observations terrain ?

Oui, et c'est confirmé depuis des années par les logs serveur. Quand on analyse les requêtes Googlebot, on constate qu'il ne redemande pas une ressource GET tant que son cache est valide. Les audits de crawl budget montrent que le bot saute systématiquement les ressources encore fraîches.

Le piège ? Beaucoup de devs configurent des APIs publiques avec des max-age par défaut hérités de frameworks (souvent 3600s ou plus). Résultat : Googlebot lit des données périmées sans que personne ne s'en aperçoive. C'est invisible en navigation humaine, mais critique en indexation.

Quelles zones d'ombre subsistent dans cette déclaration ?

Martin Splitt ne précise pas comment Google gère les paramètres dynamiques dans les URLs GET. Une API appelée avec ?timestamp=xxx génère techniquement une URL unique à chaque requête — donc pas de cache. Mais qu'en est-il des paramètres de tri, pagination, ou filtres ? [À vérifier]

Autre point flou : le comportement avec les réponses vides ou 204 No Content. Si une API GET renvoie un 204, Google met-il en cache cette absence de contenu ? Sur les sites headless, c'est un pattern courant pour signaler qu'une donnée n'existe plus. Silence radio de Google sur ce cas.

Dans quels scénarios cette règle pose-t-elle problème ?

Sur les sites à contenu ultra-volatile : médias en temps réel, plateformes de trading, inventaires dynamiques. Un article de breaking news chargé via API GET avec un cache de 5 minutes peut être obsolète dans l'index pendant cette fenêtre.

Pire encore : les sites qui font du A/B testing côté API. Si l'API GET renvoie une variante A puis une variante B selon un cookie, mais que Google cache la première réponse, il ne verra jamais les autres versions. Le cloaking involontaire guette.

Attention : Un contenu critique pour le SEO ne doit JAMAIS dépendre d'une API GET avec un cache long. Privilégiez le server-side rendering ou un cache très court (max 60s) pour les données indexables.

Impact pratique et recommandations

Que faut-il auditer en priorité sur un site qui utilise des APIs ?

Premièrement, cartographier toutes les APIs GET qui servent du contenu visible par l'utilisateur. Pas seulement les endpoints évidents — aussi les micro-services internes, les CDN de données, les APIs tierces (avis clients, stocks, tarifs).

Deuxièmement, vérifier les headers HTTP réels renvoyés par chaque endpoint. Pas ceux de la doc, ceux qu'on observe dans un curl ou les DevTools. Un Cache-Control absent équivaut souvent à un cache implicite de plusieurs heures selon le serveur.

Comment configurer les headers de cache pour l'indexation ?

Pour du contenu destiné à être indexé, le sweet spot se situe entre no-cache (trop agressif, tue le crawl budget) et max-age=3600 (trop long, risque d'obsolescence). Un max-age=60 à 300 secondes est un bon compromis pour la plupart des sites.

Ajouter systématiquement must-revalidate ou stale-while-revalidate pour forcer Googlebot à revérifier la fraîcheur. Et si le contenu change rarement, mieux vaut utiliser un ETag — le bot fait une requête conditionnelle et économise de la bande passante si rien n'a bougé.

Quelles erreurs techniques guettent les implémentations headless ?

L'erreur classique : charger du contenu critique en POST "pour des raisons de sécurité". C'est une incompréhension du rôle de POST. Si la donnée est publique et doit être indexée, elle doit transiter en GET, point.

Autre faute fréquente : ne pas tester le rendu Googlebot avec les mêmes paramètres de cache que la prod. L'outil de test d'URL de Search Console ne simule pas toujours fidèlement le comportement du cache réel. Il faut croiser avec des logs serveur pour voir ce que le bot récupère vraiment.

  • Lister toutes les APIs GET servant du contenu indexable
  • Vérifier les headers Cache-Control, Expires, ETag sur chaque endpoint
  • Configurer un max-age entre 60 et 300 secondes pour le contenu dynamique
  • Ajouter must-revalidate ou stale-while-revalidate pour forcer la revérification
  • Ne JAMAIS utiliser POST pour récupérer du contenu destiné à l'indexation
  • Tester le rendu réel avec Google Search Console + analyse des logs serveur
La mise en cache des APIs GET par Google n'est pas un détail technique — c'est un pilier de l'indexation moderne. Un site headless ou JAMstack mal configuré peut voir son contenu figé dans l'index pendant des heures, voire des jours. La maîtrise fine des headers HTTP devient un prérequis SEO au même titre que le crawl budget ou le maillage interne. Ces optimisations nécessitent souvent une collaboration étroite entre équipes SEO et développement ; si cette expertise manque en interne, l'accompagnement par une agence SEO spécialisée dans les architectures modernes peut éviter des erreurs coûteuses et accélérer la mise en conformité.

❓ Questions frequentes

Une API GET sans header Cache-Control est-elle quand même mise en cache par Google ?
Oui, en l'absence de directive explicite, Google applique un cache par défaut dont la durée dépend du code HTTP renvoyé (généralement quelques heures pour un 200 OK). Mieux vaut spécifier explicitement un max-age pour contrôler ce comportement.
Si je change le contenu d'une API GET, combien de temps avant que Google indexe la nouvelle version ?
Cela dépend du max-age défini dans les headers. Si vous avez fixé max-age=3600, Googlebot attendra jusqu'à 1 heure avant de revérifier la ressource. Un max-age court (60-300s) réduit ce délai.
Les paramètres d'URL dans une requête GET cassent-ils le cache de Google ?
Chaque combinaison unique de paramètres génère une entrée de cache distincte. ?page=1 et ?page=2 sont deux ressources différentes pour Google, donc deux caches séparés. Attention à la prolifération d'URLs.
Peut-on forcer Google à ignorer le cache d'une API GET ?
Oui, en renvoyant Cache-Control: no-cache ou no-store. Mais cela peut impacter négativement le crawl budget — le bot devra re-télécharger la ressource à chaque passage. À utiliser avec parcimonie.
Un contenu chargé via POST est-il complètement invisible pour Google ?
Pas toujours. Si le contenu s'affiche dans le DOM après le chargement POST et que JavaScript est exécuté, Google peut le voir au rendu. Mais il ne pourra jamais crawler directement l'endpoint POST, ce qui limite la découverte et l'indexation.
🏷 Sujets associes
JavaScript & Technique Performance Web

🎥 De la même vidéo 28

Autres enseignements SEO extraits de cette même vidéo Google Search Central · durée 46 min · publiée le 25/11/2020

🎥 Voir la vidéo complète sur YouTube →

Declarations similaires

💬 Commentaires (0)

Soyez le premier à commenter.

2000 caractères restants
🔔

Recevez une analyse complète en temps réel des dernières déclarations de Google

Soyez alerté à chaque nouvelle déclaration officielle Google SEO — avec l'analyse complète incluse.

Aucun spam. Désinscription en 1 clic.