Alors que JavaScript s’intègre de plus en plus au HTML sur le Web, les rĂ©fĂ©renceurs doivent dĂ©velopper une comprĂ©hension de la façon de rendre les sites JavaScript consultables.
Nous avons couvert certaines approches SEO de base pour JavaScript dans un article prĂ©cĂ©dent. Cependant, un sujet complexe mĂ©rite un traitement approfondi. Jetons donc un coup d’Ĺ“il aux dĂ©tails derrière le # popup ! / approche instantanĂ©e pour les sites JavaScript.
Avez-vous mĂŞme besoin de faire cela?
Les moteurs de recherche traitent chaque jour de plus en plus de JavaScript. Cependant, cela ne signifie pas que votre site AngularJS sera indexĂ© et classĂ©. Les moteurs analysent maintenant du JavaScript, mais l’indexation complète de tous les Ă©tats des applications Web JavaScript semble encore loin. Si votre JavaScript s’exĂ©cute dans le navigateur et extrait le contenu de la base de donnĂ©es, les moteurs ne le verront probablement pas.
PrĂ©-rendu des pages d’instantanĂ©s et publication spĂ©cifique au bot
C’est peut-ĂŞtre l’approche la plus populaire pour les problèmes de rĂ©fĂ©rencement JavaScript cĂ´tĂ© client. Le flux de base est le suivant :
- DĂ©tectez les robots des moteurs de recherche soit en regardant l’URL si vous avez utilisĂ© # ! (“hashbang”) ou simplement en vĂ©rifiant l’agent utilisateur de la requĂŞte.
- Si le bot est détecté, redirigez la requête vers le moteur de rendu de votre choix, tel que PhantomJS. Ce moteur doit attendre que tout le contenu AJAX soit chargé.
- Une fois chargé, récupérez la source de la page rendue et envoyez-la au bot.
Ironiquement, il s’agit d’une forme de camouflage : soumettre un contenu spĂ©cifique Ă des bots, souvent un non-non en SEO. Cependant, ce type de cloaking est considĂ©rĂ© comme “Ă©thique” puisque le contenu est pratiquement le mĂŞme que ce que les utilisateurs verraient. Par consĂ©quent, les moteurs de recherche sont d’accord avec cela.
Google a une spĂ©cification de suivi AJAX complète qui couvre les Ă©crous et les boulons. L’idĂ©e de base est que l’on ajoute le #! identifiant de vos URL ou inclure le code HTML [meta name=”fragment” content=”!”] balise Ă l’en-tĂŞte de la page. Cela alerte Google que la page utilise des fragments d’URL et les amène Ă indexer la page.
Comme je l’ai mentionnĂ© dans mon article prĂ©cĂ©dent, History.pushState est une autre option pour crĂ©er des URL AJAX indexables. PushState a des problèmes, notamment le fait qu’il ne prend pas en charge IE 9, qui est toujours un navigateur assez populaire.
Problèmes potentiels avec le pré-rendu
Il y a quelques points Ă garder Ă l’esprit si vous dĂ©cidez d’opter pour le prĂ©-rendu :
- DĂ©tection de robots. Assurez-vous que vous servez tous les bots, pas seulement Googlebot (c’est-Ă -dire Bingbot, et al).
- Moment de l’instantanĂ©. Tenez compte du fait que vos Ă©lĂ©ments JavaScript peuvent prendre un certain temps pour s’afficher via PhantomJS. Vous devrez peut-ĂŞtre crĂ©er un dĂ©lai pour permettre Ă tout le contenu de se charger avant de mettre la page en cache. Sinon, votre page d’instantanĂ© peut ĂŞtre incomplète ou partiellement rendue.
- Temps de chargement de la page. De mĂŞme, si vous exĂ©cutez le processus de page d’instantanĂ© au moment de la demande d’URL du bot, la page peut se charger lentement. La vitesse de chargement de la page est un facteur de classement SEO de plus en plus important, donc si votre page semble se charger lentement pour le bot, elle peut ĂŞtre affectĂ©e nĂ©gativement. C’est pourquoi il est souhaitable de mettre les pages en cache Ă l’avance. Cela a l’avantage supplĂ©mentaire de faire apparaĂ®tre votre site plus rapidement pour les moteurs que pour les utilisateurs.
- Le traitement par lots. Si vous avez de nombreuses pages, vous souhaiterez peut-ĂŞtre exĂ©cuter le processus d’instantanĂ© Ă une heure prĂ©cise en dehors des heures de bureau ou sur votre propre serveur. Le processus peut nĂ©cessiter beaucoup de ressources.
VĂ©rification des pages d’instantanĂ©s
Puisque vous utilisez la dĂ©tection de robots, il est plus difficile de vĂ©rifier que votre processus fonctionne rĂ©ellement. Une façon de vĂ©rifier votre travail consiste Ă utiliser la fonctionnalitĂ© “Rechercher comme Google” dans Google Webmaster Tools. Entrez l’URL d’une page d’instantanĂ© (elle peut ĂŞtre diffĂ©rente de l’URL en direct affichĂ©e aux utilisateurs) dans GWT et vĂ©rifiez si Google peut l’extraire correctement. Cela nĂ©cessite une page en direct, alors planifiez en consĂ©quence.
Récupérer comme Google prend actuellement en charge # ! mais pas URL pushState. Si vos URL semblent statiques, tout ira bien.
Services de pré-représentation
Construire une capacitĂ© de prĂ©-rendu complète peut ne pas ĂŞtre trivial. Pour un site plus important, cela peut impliquer la configuration d’un serveur de mise en cache, d’une base de donnĂ©es pour le contenu, d’un service de mise en cache des appels, d’un planificateur et d’un utilitaire d’administration. Heureusement, plusieurs entreprises ont proposĂ© des solutions pour traiter tout ou partie de l’approche de prĂ©-rendu. Plusieurs que je connais incluent:
- Prerender.io. Prerender.io exĂ©cute un service qui fonctionne avec PhantomJS pour hĂ©berger et servir des pages d’instantanĂ©s. Ils Ă©liminent le casse-tĂŞte liĂ© Ă l’exĂ©cution de votre propre serveur de prĂ©-rendu. Leur prix est raisonnable en fonction du nombre de pages hĂ©bergĂ©es et de la frĂ©quence Ă laquelle les instantanĂ©s sont pris.
- Brombone.com. Brombone exĂ©cute un service similaire dans lequel des pages d’instantanĂ© peuvent ĂŞtre gĂ©nĂ©rĂ©es en fonction de l’horodatage de l’URL dans le plan du site ou peuvent ĂŞtre planifiĂ©es de manière personnalisĂ©e.
- InstantanĂ©s Ajax. AjaxSnapshots propose un service de prĂ©-rendu avec de belles options de configuration. Pour le moment, leur site Web rĂ©pertorie le prix comme gratuit (du moins pour le moment), donc c’est Ă peu près tout.
Recherche payante et pages de destination
Les sites JavaScript ont des difficultĂ©s avec la recherche payante ainsi qu’avec le rĂ©fĂ©rencement. Par exemple, AdWords dĂ©termine le niveau de qualitĂ© en fonction, entre autres, du contenu que le bot AdWords voit sur la page. Une approche consiste Ă fournir la page d’instantanĂ© Ă Google AdsBot (une liste complète des robots d’exploration et des agents utilisateurs de Google est disponible ici).
De plus, si vos produits ou le contenu de vos produits se trouvent dans une application Ă une seule page, il peut ĂŞtre difficile de forcer cet Ă©tat via l’URL de destination de la recherche payante. CrĂ©ation # ! Ou les URL d’apparence statique sont Ă peu près une exigence ici.
Étant donné que les pages de destination de recherche payante doivent souvent être hautement personnalisées pour bien convertir, à long terme, il peut être préférable de créer des pages dédiées à vos campagnes PPC, laissant votre expérience Web JavaScript de base aux utilisateurs et au référencement.
conclusion
Les sites gourmands en JavaScript sont lĂ pour rester. Bien qu’il ne soit pas trivial de crĂ©er un site JavaScript qui fonctionne bien en SEO, il est encore plus difficile d’essayer de rĂ©parer un site existant qui a Ă©tĂ© construit sans penser au SEO. Jusqu’Ă ce que les cadres et les outils soient amĂ©liorĂ©s pour faciliter l’intĂ©gration des exigences SEO, les rĂ©fĂ©renceurs devront travailler en Ă©troite collaboration avec les dĂ©veloppeurs pour s’assurer que le SEO est pris en compte. Faire en sorte que SEO et JavaScript vivent en harmonie n’est peut-ĂŞtre pas facile, mais cela en vaut la peine.
Merci à Vladimir Katz, ingénieur senior chez Huge, pour sa contribution à ce post.
Image de la page d’accueil via Flickr.
