SEO et web 2.0 : Quand les moteurs de recherche pourront-ils indexer correctement JavaScript ?


    


Alaa-eddine

Tous les webmasters (ou presque) savent que les robots ont du mal avec les sites Ajax, ces derniers ne sachant pas interpréter JavaScript, il est difficile de « déduire » le contenu dynamique d’un site web en Ajax.

Mais cette « vérité » pourra-t-elle changer un jour ?

 

 

Le paradoxe de la SEO web 2.0

Les sites web surfent aujourd’hui sur la vague du 2.0, de l’Ajax, des contenus dynamiques, des effets visuels …etc, mais si comme moi vous avez eu à faire à de tels sites en SEO, vous êtes surement d’accord pour dire que :

  1. Cela engendre un double travail : tous le contenu dynamique doit avoir son équivalent en statique
  2. Il n y a pas de standard ou de « best-practice » générique puisque chaque cas ou presque est unique

Et quand on demande au support de notre cher ami google la réponse est sans appel :

Google peut-il indexer les contenus JavaScript  dans ma page ?

La recherche google, n’est pas capable d’indexer les contenu dynamique JavaScript, la règle générale pour être sure que votre page web peut être indexée par google est de vous assurer que tout le text devant être indexé soit visible par un navigateur text, ou un navigateur dont javascript a été désactivé (traduit depuis : http://www.google.com/support/customsearch/bin/answer.py?answer=72366)

 

Mais techniquement, est-il possible d’indexer du contenu dynamique ?

Aujourd’hui, on a tous l’arsenal technique nécessaire pour indexer un site dynamique JavaScript.

Le projet node.js, est un serveur web interprétant JavaScript coté serveur il est basé sur le moteur V8 (utilisé dans google chrome).

Node.js permet de charger des librairies que vous utilisez coté client, comme jquery ou autre en plus des librairies spécifiques coté serveur (librairie de gestion des sockets par exemple) .

Node.js est la preuve donc qu’interpréter JavaScript coté serveur n’est pas une illusion.

Mais interpréter JavaScript coté serveur n’est pas suffisant, car le contenu dynamique réagit à des évènements internes ou externes.

Ce que j’appels événements internes sont les événements déclenchés par le moteur JavaScript (ou le navigateur d’un point de vue utilisateur), exemples : chargement de la page, fin de chargement du contenu HTML, fin du téléchargement des images …etc

Les événements externes sont ceux déclenchés par l’utilisateur : clique, survole de sourie …etc.

Un algorithme simpliste pour indexer les contenus dynamiques.

Voici une possibilité – certainement loin d’être parfaite – qui permettrait d’indexer des pages dynamiques.

Extraction du code HTML  dans une variable.

Déclenchement des événements internes.

Collecte des événements  externes.

Pour chaque événement

Déclencher un événement

Extraction du code HTML engendré suite à l’événement

Diff entre HTML original et HTML engendré

Traitement du diff comme une page enfant du site

Fin pour

Quelques problèmes liés à une indexation du JavaScript interprété coté serveur

  1. La hiérarchie des événements : un événement peut avoir une influence sur un autre, on peut très bien s’arranger pour qu’un clique sur un même élément déclenche à chaque fois une action différente. Mais ceci est un faux problème puisque la même chose peut être faite avec du code coté serveur, et ça n’empêche pas les pages d’être indexées.
  2. Ajax : les requêtes ajax feront appel à des serveurs externes, le résultat est donc non maitrisé, peut potentiellement ralentir le traitement d’une page, voir, engendrer une surcharge du serveur cible. Une solution possible serait de différer le traitement des requêtes ajax en les mettant dans un pool. L’indexation d’une page dynamique se fera alors en trois temps : collecte de tous les événements ajax dans un pool, traitement du pool, indexation de la page.
  3. Le blackhat SEO : Avec du code dynamique il devient encore plus facile de tromper les moteurs, des événements cachés peuvent très bien être enregistrés avec javascript, il ne seront jamais déclenchés par des utilisateurs, mais uniquement par le moteur pour produire du faux contenu.
  4. Il y en a d’autres … 🙂

 

Une autre approche pour indexer le contenu JS/dynamique, consisterait à utiliser les navigateurs pour renvoyer au moteur les différentes versions générées d’une page au fur et à mesure de la navigation (avec l’accord de l’utilisateur bien sûr 😉 ) .

 

Une nouvelle génération de moteurs de recherche ?

Il est plus que temps que l’un des moteurs de recherche se mettent à indexer ces contenus, d’autant plus que la tendance actuelle vas vers les sites web riches dont une bonne partie du contenu est JS/dynamique.

Je suis curieux de voir comment les moteurs s’y prendront pour résoudre ce problème, et quel sera l’approche la plus efficace et qui donnerait les résultats les plus pertinents.

Il y a là peut être un créneau à prendre pour le prochains moteur qui souhaite détrôner le géant Google, à moins que ce prochain moteur soit … google lui-même 😀



 

A lire également