Blog

Une proposition pour rendre AJAX indexable par les robots d'exploration

Mercredi 7 octobre 2009

Aujourd’hui, nous sommes ravis de proposer un nouveau standard pour rendre les sites Web basés sur AJAX indexables par les robots. Cela profitera aux webmasters et aux utilisateurs en rendant le contenu des sites Web riches et interactifs basés sur AJAX universellement accessible via les résultats de recherche sur n’importe quel moteur de recherche qui choisit d’y participer. Nous pensons que rendre ce contenu disponible pour l’exploration et l’indexation pourrait considérablement améliorer le Web.

Une proposition pour rendre AJAX indexable par les robots d'exploration

Bien que les sites Web basés sur AJAX soient populaires auprès des utilisateurs, les moteurs de recherche ne sont traditionnellement pas en mesure d’accéder à leur contenu. Lors de notre dernière vérification, près de 70 % des sites Web que nous connaissons utilisent JavaScript sous une forme ou une une autre. Bien sûr, la majeure partie de ce JavaScript n’est pas AJAX, mais plus les moteurs de recherche peuvent explorer et indexer AJAX, plus les développeurs peuvent ajouter des fonctionnalités riches à leurs sites Web tout en apparaissant dans les moteurs de recherche.

Parmi les objectifs que nous souhaitions atteindre avec cette proposition figurent :

  • Des modifications minimes sont requises à mesure que le site Web se développe
  • Les utilisateurs et les moteurs de recherche voient le même contenu (pas de cloaking)
  • Les moteurs de recherche peuvent envoyer les utilisateurs directement vers l’URL AJAX (et non vers une copie statique)
  • Les propriétaires de sites ont un moyen de vérifier que leur site Web AJAX s’affiche correctement et que le robot d’exploration a donc accès à tout le contenu

Voici comment les moteurs de recherche exploreraient et indexeraient AJAX dans notre proposition initiale :

  • Modifier légèrement les fragments d’URL pour les pages AJAX dynamiques (stateful)
    Les pages AJAX dynamiques affichent le même contenu lorsqu’on y accède directement. Ce sont des pages qui pourraient être référencées dans les résultats de recherche. Au lieu d’une URL telle que
    https://example.com/page?query#state
    nous aimerions proposer l’ajout d’un jeton pour permettre de reconnaître ces URL :
    https://example.com/page?query#[FRAGMENTTOKEN]state. Sur la base d’un examen des URL actuelles sur le Web, nous proposons d’utiliser « ! » (un point d’exclamation) comme jeton pour cela. L’URL proposée qui pourrait être affichée dans les résultats de recherche serait alors :
    https://example.com/page?query#!state.
  • Utiliser un navigateur sans interface graphique (headless browser) qui génère un instantané HTML sur votre serveur Web
    Le navigateur sans interface graphique est utilisé pour accéder à la page AJAX et génère du code HTML basé sur l’état final du navigateur. Seules les URL spécialement étiquetées sont transmises au navigateur sans interface graphique pour traitement. En procédant ainsi côté serveur, le propriétaire du site Web contrôle le code HTML généré et peut facilement vérifier que tout le JavaScript est exécuté correctement. Un exemple d’un tel navigateur est
    HtmlUnit, un « navigateur sans interface graphique pour programmes Java » open source.
  • Permettre aux robots d’exploration des moteurs de recherche d’accéder à ces URL en échappant l’état
    Les fragments d’URL n’étant jamais envoyés avec les requêtes aux serveurs, il est nécessaire de modifier légèrement l’URL utilisée pour accéder à la page. En même temps, cela indique au serveur d’utiliser le navigateur sans interface graphique pour générer du code HTML au lieu de renvoyer une page avec JavaScript. D’autres URL existantes, telles que celles utilisées par l’utilisateur, seraient traitées normalement, en contournant le navigateur sans interface graphique. Nous proposons d’échapper les informations d’état et de les ajouter aux paramètres de requête avec un jeton. En utilisant l’exemple précédent, l’une de ces URL serait
    https://example.com/page?query&[QUERYTOKEN]=state. D’après notre analyse des URL actuelles sur le Web, nous proposons d’utiliser _escaped_fragment_ comme jeton. L’URL proposée deviendrait alors
    https://example.com/page?query&_escaped_fragment_=state.
  • Afficher l’URL d’origine aux utilisateurs dans les résultats de recherche
    Pour améliorer l’expérience utilisateur, il est logique de renvoyer directement les utilisateurs vers les pages basées sur AJAX. Pour ce faire, vous pouvez afficher l’URL d’origine (telle que
    https://example.com/page?query#!state dans notre exemple ci-dessus) dans les résultats de recherche. Les moteurs de recherche peuvent vérifier que le texte indexable renvoyé à Googlebot est identique ou constitue un sous-ensemble du texte renvoyé aux utilisateurs.

diagram of an http request with ajax crawl setup

En résumé, en commençant par une URL dynamique telle que
https://example.com/dictionary.html#AJAX, elle pourrait être disponible à la fois pour les robots d’exploration et les utilisateurs sous la forme https://example.com/dictionary.html#!AJAX qui pourrait être explorée comme
https://example.com/dictionary.html?_escaped_fragment_=AJAX qui à son tour serait affichée aux utilisateurs et accessible sous le nom https://example.com/dictionary.html#!AJAX

Voir la présentation

Nous travaillons actuellement sur une proposition et une mise en œuvre prototype. Vos commentaires sont les bienvenus — veuillez ajouter vos commentaires ci-dessous ou dans notre
Forum d’aide pour les webmasters. Merci de l’intérêt que vous portez à rendre le Web basé sur AJAX accessible et utile grâce aux moteurs de recherche !

Article de blog par
John Mueller, analyste des tendances pour les webmasters, Google Zurich

Alien Road

Comment nous l'appliquons

Google announcements age. We keep this post here for the record, and we note for clients whether the behaviour it describes still applies today or has since been superseded.

Services associés

Partager