SEO pour JavaScript : Une expérience pour tester les moteurs de recherche

Cet article se penche sur les meilleures ressources SEO pour JavaScript et sur un test permettant de comprendre comment les moteurs de recherche (Google, Bing et Yandex) se comportent lorsqu’ils doivent crawler et indexer des pages rendues par JS. Nous examinerons également quelques points à prendre en compte par les experts en SEO et les développeurs.

JavaScript est un acteur majeur du web d’aujourd’hui, et comme l’a dit John Mueller, « il ne disparaîtra pas facilement ».

Le sujet JavaScript est souvent diffamé par la communauté SEO, mais je pense que cela est dû à un manque de compétences techniques en matière de développement JavaScript et de rendu de pages web. Mais cela dépend aussi de la difficulté à communiquer entre les experts SEO et les équipes de développement.

Ce billet est divisé en deux parties : la première (courte) propose quelques ressources pour approfondir le sujet ; dans la seconde (plus approfondie), nous regardons une expérience très simple qui teste les moteurs de recherche sur une page web rendue en JavaScript.

Quelques ressources qui expliquent le SEO pour JavaScript

Dans la vidéo suivante, Martin Splitt, se référant à Google, introduit le sujet en expliquant l’importance de réfléchir d’un point de vue SEO lors du développement de projets réalisés en JavaScript. Il fait notamment référence aux pages qui rendent du contenu critique en JS et aux applications de type page simple.

 

 

« Si vous voulez que les ressources soient indexées le plus rapidement possible, assurez-vous que le contenu le plus important se trouve dans la source de la page (rendu côté serveur).« 

Quelle en est la raison ? Parce que nous devons toujours garder à l’esprit le schéma suivant, à savoir les deux vagues d’indexation.

The flow of crawling, indexing, rendering and reconsideration. And the two waves of processing.

Le flux du crawl, de l’indexation, du rendu et de la réexamination. Et les deux vagues de traitement.

 

Le contenu généré par JavaScript est considéré dans la deuxième vague d’indexation, car il doit attendre la phase de rendu.

Dans la vidéo suivante, cependant, des conseils fondamentaux de SEO sur les projets développés en JavaScript sont expliqués.

 

 

Nous évoluons vers des expériences utilisateur extraordinaires, mais nous nous dirigeons également vers la nécessité de compétences techniques toujours plus importantes.« 

Un test simple pour comprendre comment les moteurs de recherche traitent le JavaScript

Je vais vous exposer un test que j’ai effectué dans le seul but de retracer les étapes décrites par la documentation de Google (crawl, indexation, rendu, réexamination). Un test, cependant, qui s’étend également au-delà du moteur de recherche de Mountain View.

Note : il s’agit d’un test assez « extrême » en termes de solution technique appliquée, et il a été réalisé à l’aide de simples fonctions JavaScript, sans l’utilisation de frameworks particuliers. L’objectif est uniquement de comprendre la dynamique du moteur de recherche, et non un exercice de style.

1) La page web

Tout d’abord, j’ai créé une page web avec les caractéristiques suivantes :

$(document).ready( function () {
  hydration();
});

2) Soumission de la page aux moteurs de recherche et le testing

Après avoir publié la page, je l’ai signalée aux moteurs de recherche, et en particulier à Google (via la « vérification des URL » de la Search Console), à Bing (via « soumettre l’URL » du Webmaster Tool) et à Yandex (via « réindexer les pages » du Webmaster Tool).

A ce stade, j’ai réalisé quelques tests.

Merkle Fetch & Render: rendering test tool

Merkle Fetch & Render : outil de test de rendu

 

The DOM generated by the Google Rich Results Tes

Le DOM généré par le test Google Rich Results

3) L’indexation

À ce stade, tous les moteurs de recherche ont eu le même comportement : après quelques heures, le résultat était présent dans toutes les SERPs.

The snippet generated in the first phase on Bing, Yandex and Google

Le snippet généré dans la première phase sur Bing, Yandex et Google

 

Les snippets, comme on peut le voir dans les images, sont composés du contenu de la balise <title> et d’une description obtenue à partir des informations disponibles dans le contenu principal.

Aucune image de la page n’a été indexée.

4) Opérations d’édition, sitemap, API d’indexation Google

Le jour suivant, les extraits étaient les mêmes. J’ai réalisé quelques actions pour envoyer des signaux aux moteurs de recherche.

[oc-redirect num=1]

Les résultats

Que s’est-il passé après quelques jours ?

Google rendered and reworked the snippet

Google a rendu et retravaillé le snippet

 

1) Google a rendu le contenu en traitant le JavaScript, puis a retravaillé le résultat sur la SERP en utilisant le contenu de manière correcte.

Google has indexed the rendered content using JavaScript

Google a indexé le contenu rendu à l’aide de JavaScript.

2) La première image de l’article a également été indexée et est apparue sur Google Images.

The post image, rendered via JavaScript, appears on Google Images

L’image du post, rendue par JavaScript, apparaît sur Google Images.

 

3) Les snippets sur Bing et Yandex n’ont pas changé. Cela signifie que dans les jours qui ont suivi la publication, ils n’ont pas pris en compte le DOM final.

4) L’image montrée dans le lien pour la précharge n’a pas reçu un traitement favorable par rapport à l’autre.

Rendu de page JavaScript (β) par Yandex

Dans les outils pour webmasters de Yandex, il existe une fonction « bêta » qui vous permet de spécifier le comportement du robot lorsqu’il crawle les pages.

The Yandex rendering configuration panel

Le panneau de configuration du rendu Yandex

 

Vous pouvez suggérer d’exécuter le JavaScript pour compléter le rendu, ou de ne pas l’exécuter. L’option par défaut laisse à l’algorithme la « liberté » de choisir la meilleure action.

Dans le cas spécifique où la quasi-totalité du contenu est généré côté client, mais plus généralement, par exemple pour un framework JavaScript, il est conseillé de forcer le rendu.

Rendu dynamique

Dans la dernière phase de testing, j’ai appliqué une solution de rendu dynamique pour Bing et Yandex. Cette solution permet de différencier la réponse qui est envoyée au client afin que :

How dynamic rendering works

Comment fonctionne le rendu dynamique

 

Après avoir terminé la mise en œuvre, j’ai demandé une nouvelle indexation par le biais des outils Bing et Yandex.

Yandex, en quelques heures, a reconstruit le snippet dans les SERP comme suit. Yandex a donc considéré que la nouvelle version avait été rendue côté serveur.

The Yandex snippet after dynamic rendering

Le snippet de Yandex après le rendu dynamique

 

Bing n’a pas modifié le résultat dans le temps prévu pour le test, mais l’aurait certainement (ehm… du moins je l’espère) intégré dans les jours suivants.

Conclusions

Ce test simple démontre que Google fonctionne comme le précise la documentation, en respectant les deux phases du schéma vu dans la première partie du post. Dans la première phase, en effet, il a indexé presque instantanément le contenu présent dans la source de la page (le HTML généré côté serveur) ; dans la seconde, en quelques jours, il a indexé les parties rendues via JavaScript.

Bing et Yandex, en revanche, ne semblent pas détecter le contenu généré via JavaScript… du moins dans les jours qui suivent la publication.

Ces éléments mettent en évidence certains aspects liés à JavaScript que je vais essayer d’expliquer un peu plus en détail ci-dessous.

 

La question est la suivante : cela vaut-il le coup d’introduire une telle « complexité » dans un projet ? La réponse est simple : oui, si l’on veut produire une expérience utilisateur exceptionnelle ! « 

 

Notes Complémentaires

Bon JavaScript, et bon SEO !