Si vous n’êtes pas un développeur web avancé, il est probable que vous n’avez jamais entendu parler de code Web Assembly, qui est souvent désigné sous l’acronyme WASM.
Mais vous risquez d’en entendre parler de plus en plus car il s’agit ni plus ni moins que du quatrième langage de programmation que les navigateurs web supportent. Ces quatre langages sont :
- le HTML bien sûr
- les CSS
- le Javascript
- et à présent le code WASM
Pourquoi un quatrième langage pour les pages web ?
Ce quatrième langage a été introduit pour améliorer les performances des sites web. En effet, le HTML, les CSS, ou le Javascript sont des langages interprétés. Pour ce type de langage, c’est le navigateur qui doit effectuer les tâches codées avec ces langages, et cela prend du temps, mais aussi des ressources inutiles.
Depuis les débuts de l’informatique, on sait que pour faire des logiciels ultra rapides, il vaut mieux compiler les programmes rédigés en langage interprétés, pour les transformer en code « bas niveau », c’est à dire un code très proche de celui que comprennent les processeurs. L’idéal c’est de travailler en langage assembleur, mais cela oblige à faire autant de programmes que de variantes des modèles de processeur. C’est efficace en matière de performances, mais pas pratique du tout.
Du coup, en 2021, personne ne fait ça : les développeurs qui fabriquent des systèmes d’exploitation, ou des logiciels temps réel ou de l’informatique embarquée travaillent avec des langages plus universels que l’assembleur : le langage C, ou le C++ ou le C#. Une fois codé avec ces langages, le programme est compilé en langage bas niveau et le tour est joué.
Le code WASM fonctionne selon une logique similaire. Les programmes peuvent être développés en langage C, C++ ou C# puis compilés. Il existe aussi des compilateurs pour des langages haut niveau comme le Java, Ruby ou Python. Une fois compilé, on obtient du Bytecode, c’est à dire un code qui n’est pas directement exécutable par le processeur. En fait c’est le navigateur qui finira le travail en convertissant ce bytecode en instructions bas niveau pour le processeur.
Aujourd’hui, la plupart des navigateurs supportent le code WASM.
Le code WASM a été inventé pour répondre aux besoins des programmeurs de jeux en ligne : pour substituer à un logiciel installé sur un ordinateur ou smartphone une application qui tourne sur un navigateur, il disposer de la même rapidité d’exécution. Avec le javascript, langage interprété, c’est impossible. Avec un code compilé, les performances redeviennent compatibles avec des applications très exigeantes en temps d’exécution et en ressources.
Pour le moment, WASM ne sait pas encore utiliser la puce de la carte graphique (GPU) mais c’est dans la roadmap pour les prochains mois.
Le Code WASM pose-t’il des problèmes pour le SEO ?
En théorie, la réponse est non. En pratique, cela peut arriver.
Pour le moment, il n’est pas possible de manipuler le DOM directement en Web Assembly : il faut passer par du code Javascript pour créer ou modifier du code HTML. Par conséquent, un site qui exploite les possibilités du code WASM de manière intensive hérite des défauts inhérents au Javascript.
Cela signifie que si vous oubliez de générer les balises SEO pour une page, si vous ne recréez pas une arborescence virtuelle avec des urls fixes identifiant des pages web reliées par des liens de navigation, vous allez produire un site difficile à bien référencer.
Mais en soi, Google n’a pas plus de difficulté à indexer une page web qui exploite du code WASM que du code Javascript. Googlebot utilise la dernière version stable de Chromium, qui peut exécuter le code Web Assembly. Donc le contenu généré en WASM sera disponible pour la page, qui sera indexée normalement sauf problème de performances.
Bref, si un développeur vous annonce qu’il veut ajouter du code WASM sur votre site web, il n’y a pas de contre indication formelle pour des raisons d’optimisation SEO.
Mais soyez alertés : dans ce contexte, l’essentiel du contenu HTML risque d’être produit en Javascript, et les chances que le code produit par vos développeurs ne soit pas 100% compatibles avec les bonnes pratiques SEO sont décuplées.