Le sujet du SSR (Server-Side Rendering) est, dans le référencement naturel, intimement lié aux problématiques de JavaScript SEO . Il s’agit, en clair, de s’assurer que les contenus rendus côté serveur soient bien accessibles, interprétables et indexables par les moteurs de recherche.
Et ce qui valait hier pour Google vaut encore plus aujourd’hui pour les moteurs génératifs. Car si une IA ne voit pas le contenu… elle ne pourra pas le reprendre. C’est d’ailleurs l’un des points que j’aborde en détail dans mon guide sur la Generative Engine Optimization (GEO) , qui explore comment rendre un contenu lisible et réutilisable par des systèmes comme ChatGPT Search, Perplexity ou SGE.
Cela fait depuis 2017 que je suis traumatisé travaille sur des sites en Javascript afin d’améliorer leur référencement naturel. J’ai d’ailleurs été un des premiers en France à créer un guide pour analyser, tester et améliorer l’indexation d’un site sous Javascript.
L’objectif de cet article “de niche” si je peux me permettre l’expression, est de vous apporter des réponses sur plusieurs éléments, que vous soyez un professionnel du marketing ou un développeur avec une sensibilité au référencement naturel . Ainsi, je vais aborder les points suivants :
Expliquer très simplement ce qu’est le SSR ; Pourquoi considérer cette solution en SEO ; Quelle solution choisir entre SSR et CSR ; Les autres alternatives au SSR qui sont compatibles avec le SEO ; Puis vous donner une version longue et plus complète pour les personnes qui aiment bien comprendre les tenants et aboutissants. Qu’est-ce que le SSR en SEO ? La version simple Lorsqu’un internaute clique sur un lien (depuis les SERPs ou depuis un autre site), mais c’est vrai aussi avec un robot d’exploration dont Googlebot, il se passe les actions suivantes (version simple) :
Le serveur reçoit la requête ; Il vérifie que le user agent n’est pas bloqué par le robots.txt ; Si le user agent n’est pas bloqué, le serveur cherche la ressource (la page si vous préférez) à envoyer au client (prononcer en Anglais) - le client pouvant être le navigateur d’un internaute ou un crawler - ; Il génère alors le code HTML du document ; Puis envoie le document HTML complet au client . L’ “effort” principal est l’étape 4 ci-dessus durant laquelle la “gymnastique” est réalisée par le serveur. Le fait que cette “gymnastique” de génération du fichier HTML soit faite côté serveur fait qu’on peut parler de SSR (Server-Side Rendering ) .
Ainsi, le client (navigateur ou robot d’exploration) reçoit un fichier HTML déjà complet et structuré .
Quel est le lien entre SSR et SEO ? Pour une raison très simple et très basique qui n’est autre que la facture d’électricité de Google. Je m’explique.
Tout d’abord, il faut comprendre comment le processus d’exploration et d’indexation fonctionne chez Google.
Quand Google envoie une requête à un serveur, s’il n’est pas bloqué par le fichier robots.txt, il reçoit en échange des fichiers de format HTML, CSS, et JS.
Si votre site est sous PHP (comme un bon vieux Wordpress), Google reçoit un fichier HTML exhaustif et explicite où votre contenu principal est bien présent et qu’il comprendra parfaitement ; Si votre site est sous Javascript avec un rendering côté client , Google reçoit un fichier HTML très léger et peu explicite ainsi qu’un fichier JS volumineux. Dans ce second cas, celui du site en Javascript en CSR, la gymnastique est alors déportée sur Google. C’est à dire :
Googlebot récupère le HTML et le JS ; Il l’envoie à un autre “programme” de Google qu’on appelle le WRS (Web Rendering Service ) ; Le WRS exécute je Javascript ; Le WRS ensuite re-génère le fichier HTML et obtient cette fois un fichier plus exhaustif et explicite ; Google peut alors décider (ou non) d’indexer votre page et fournit au Googlebot les liens internes et externes qu’il a extrait du fichier. Il y a donc plus d’étapes lorsqu’un site est en Javascript avec Client-Side Rendering (CSR).
Mais qui dit plus d’étapes dit plus d’efforts.
Qui dit plus d’efforts dit plus de ressources consommées du côté de Google pour “comprendre” votre site par rapport au Wordpress de votre concurrent.
Qui dit plus d’efforts dit une plus grosse facture d’électricité. Bien que cela ne pose pas de problèmes à votre navigateur, à l’échelle du web mondial que Google cherche à explorer, ça en devient un.
Donc, un site internet render en client-side (CSR) n’est pas une bonne chose pour Google puisque pour l’interpréter, cela consomme plus de ressources . Google dédiant à chaque domaine une capacité maximum (qui se reflète dans le crawl budget ), s’il consomme trop de ces capacités à l’exécution de votre JS, il reviendra vous voir moins souvent.
Et ensuite, même pour vous en tant que SEO, ce n’est pas non plus nécessairement une bonne chose car l’exécution du JS par Google est plus prône à l’erreur que s’il récupère déjà un fichier HTML complet et explicite .
Nota Bene : j’entends par “explicite” que le cœur de votre contenu est inclus dans le fichier.
Javascript SEO : SSR vs CSR ? Si j’ai été bien clair ci-dessus, dans le cas où vous opposeriez le SSR versus le CSR pour un site utilisant un framework en JS, vous comprendrez que le CSR demande plus d’efforts aux outils de Google pour “analyser” et “comprendre” votre page .
Alors que dans le cas du SSR, cet effort est porté par le serveu r. Ainsi, si la question se pose entre le SSR et le CSR, je vous conseille fortement le SSR (ou SSG mais j’explique la subtilité plus bas).
SSR, SSG, SSR avec hydration , pre-rendering , dynamic rendering , hybrid rendering et CSR : la version longue et les abus de langage Maintenant que nous avons abordé la version 'simple' du SSR pour le SEO, je me permets cette partie plus détaillée si vous souhaitez comprendre ce principe de rendering en profondeur et/ou si vous êtes développeur .
Tout d’abord, côté Javascript SEO, on a tendance à opposer le SSR au CSR comme s’il n’y avait que deux choix. Et on se retrouve à parler de SSR alors qu’on parle de SSG par exemple. Ce qui, pour un marketeur, n’est qu’une “nuance” peut néanmoins être pour le développeur une vision technique drastiquement différente.
Ainsi, commençons par définir clairement les termes.
Avant toute chose, j'appelle web app toute plateforme web destinée à un utilisateur final que ce soit un blog, un site e-commerce, ou même un SaaS.
Définition du SSR Comme je l’expliquais plus haut, un client (le navigateur d’un internaute, un crawler ) envoie une requête à un serveur. Ensuite, le serveur génère tout le HTML de la ressource demandée et l’envoie enfin en réponse au client .
Avantages du SSR : Comme le serveur gère le rendering (on parle d’ailleurs de pre-rendering des pages), le fichier envoyé au client est composé de peu de Javascript , permettant ainsi :
Un fichier HTML explicite et exhaustif, plus facile à interpréter par des indexers de moteurs de recherche ; Puisqu’il y a peu de Javascript, le client a moins de “gymnastique” à faire pour afficher le cœur du contenu (First Contentful Paint (FCP)), permettant à l’utilisateur d’accéder et d’interagir avec le contenu plus rapidement ; C’est une méthode ancienne et établie, donc bien documentée . Par exemple, Wordpress fonctionne selon le principe du SSR . Lorsqu'une requête est reçue par le serveur, WordPress génère le contenu HTML sur le serveur en utilisant PHP et une base de données (MySQL). Ensuite, le fichier HTML correspondant à la page est renvoyé au client.
Définition de l’hydration (ou SSR avec hydration ) Alors, l’hydration (hydratation en Français) est un mélange de SSR et de CSR sans pour autant être de l’hybrid rendering que je vais définir après.
Pour être clair, je vais dérouler étape par étape :
Le serveur reçoit une requête depuis un client ; Le serveur génère le document HTML complet de la page demandée (comme pour la méthode de SSR); Le serveur envoie ce document au client ; Le client reçoit le document HTML et exécute le Javascript à la recherche d’event listeners et initialiser la web app . Une fois la web app initialisée, l’interface devient alors interactive pour l’internaute. L’hydration consiste à avoir des pages pre-rendered côté serveur au moment de la requête (comme un SSR classique). La différence majeure est que la page requiert l’exécution du Javascript pour devenir interactive. Cette méthode est utilisée par Next.js sur React.
Avantages du SSR avec hydration : C’est intéressant si vous avez besoin d’avoir une web app interactive et souvent en terme de performance.
Définition du SSG (Static Site Generation ) Le SSG , parfois appelé static rendering, est une forme de pre-rendering qui consiste à générer les fichiers HTML au moment de la compilation, ce que l’on appelle aussi at build time . Une fois ces fichiers HTML générés, ils sont stockés sur un serveur.
En d’autres termes :
Développement : construction de la web app par vous-même ou vos équipes de développement ; Compilation : au moment de “publier”, le Static Site Generator s’active et génère les fichiers HTML statiques correspondant notamment aux pages ; Déploiement : les fichiers statiques sont déployés sur votre serveur voire aussi sur un CDN ; Service : lorsque votre serveur reçoit une requête, il envoie immédiatement le fichier statique HTML. Avantages du SSG : Principalement la performance ; puisque le HTML est déjà généré, le serveur peut répondre à une requête bien plus rapidement ; Ensuite, puisque votre serveur n’a pas à générer le HTML à chaque requête, cela consomme moins de ressources. Netlify ou encore le CMS Webflow utilisent du SSG.
Définition du pre-rendering Le pre-rendering consiste en fait à générer le document HTML des pages web avant qu’il ne soit envoyé à l’utilisateur (client). Ce document peut être généré lors de la réception de la requête par le serveur (comme pour le SSR et le SSR avec hydration) ou lors de la compilation de la web app (comme pour le SSG).
Définition du dynamic rendering Le dynamic rendering était une solution plébiscitée par Google jusqu’en 2022. Elle consistait tout simplement à avoir deux versions de votre web app et à servir la version la plus à même d’être comprise par le client .
Par exemple, si la requête provenait d’un internaute (identifiable par son user agent ), vous pouviez lui envoyer l’application en CSR puisque c’est son navigateur qui ferait le travail de rendering . A l’inverse, si vous identifiez le user agent d’un crawler tel que le Googlebot, vous pouviez envoyer une version pre-rendered de votre web app .
Je mets tout au passé car comme vous pouvez le voir ci-dessous, Google ne conseille plus cette solution depuis fin 2022 et tend à recommander le SSR, SSG, ou l’hydration.
Source : le guide du dynamic rendering par Google Définition de l’hybrid rendering L’hybrid rendering comme son nom l’indique, est hybride. C’est-à-dire qu’il combine différentes méthodes de rendering selon ce que votre équipe technique décide, en fonction des contraintes imposées par les frameworks.
Veillez à toujours avoir une cohérence entre ce que vous servez en SSR et en CSR. C’est-à-dire que le CSR ne doit pas altérer des éléments clés tels que la balise titre . La règle d'or étant de ne jamais modifier le DOM .
Définition du CSR Vous l’aurez compris avant, mais le client-side rendering consiste donc à ce que la “gymnastique” de compilation de la page soit effectuée côté client . Dans le cas d’un internaute qui souhaiterait visiter une page, c’est son navigateur qui s’occuperait de cette génération et non un serveur.
Ce n’est pas une solution viable en SEO comme expliqué plus haut.
Les solutions selon les frameworks javascript Comme vous le savez peut-être, il existe des frameworks qui permettent de bénéficier du pre-rendering afin de faciliter le travail des moteurs de recherche pour comprendre un site construit en Javascript. Je vous mets ci-dessous un tableau qui reprend les principaux frameworks et qui j’espère vous sera utile.
Framework
SSR
SSR avec hydration
SSG
Next.js (React)
Oui (fonctionnalité principale)
Oui
Oui (avec ISR)
Gatsby (React)
Non (axé sur le SSG)
Non
Oui (fonctionnalité principale)
Nuxt.js (Vue)
Oui
Oui
Oui
Angular Universal (Angular)
Oui
Oui
Support Limité
Astro
Oui (approche flexible)
Oui
Oui
Remix
Oui
Oui
Oui
En résumé Il est courant que lors du développement d’une web app en Javascript, la question du rendering se pose pour vos pages. Mais qu’est-ce que le rendering ? Le rendering est l’étape à laquelle un fichier HTML est généré.
Quand cela se passe côté client (navigateurs de vos utilisateurs par exemple), nous parlons de Client-Side Rendering (CSR). Cela signifie que le serveur qui reçoit votre requête pour visualiser une page envoie l’intégralité des documents à votre navigateur et c’est ce dernier qui se charge d’exécuter l’intégralité du Javascript afin de générer le fichier HTML et de rendre le contenu de la page visible, lisible et interactif.
Quand cela se passe côté serveur, nous parlons de Server-Side Rendering (SSR). Cela signifie que lorsque le serveur reçoit une requête, il s’occupe d’abord de générer un fichier HTML complet avant de renvoyer le fichier au client . Ainsi, le “gros de l’effort” est porté sur le serveur et non sur le client .
Maintenant, pourquoi est-ce important en SEO ? Un site construit en Javascript avec un rendering côté client exige que Google exécute le Javascript afin d’accéder à l’entièreté du contenu et des liens contenus dans un document. Malheureusement, cela compliqué la tâche de Google car cela requiert (1) l’intervention d’une brique supplémentaire appelée Web Rendering Service , (2) cela requiert plus de ressources et enfin (3) il est possible que la manière dont Google exécute votre Javascript génère des erreurs.
Ce sont pour ces trois raisons qu’il est plus que recommandé de favoriser l’utilisation du SSR.
Alors, si vous lisez l’article vous comprendrez qu’il n’y a pas qu’une unique méthode de SSR mais qu’il en existe plusieurs avec des implications sur la performance de chargement, l’expérience utilisateur, et la complexité technique. Cela relève d’un arbitrage à faire avec votre équipe technique et selon vos objectifs et enjeux ; par exemple, une web app accessible uniquement aux personnes connectées (comme pour un SaaS) ne requiert aucunement du SSR puisque la performance SEO ne compte pas.
Si je peux me permettre un conseil, je conseille très fortement les équipes techniques et les marketeurs (et plus particulièrement l’expert SEO s’il existe) d’échanger en amont du développement d’un nouveau site web vitrine qui serait dédié à l’acquisition et la brand awareness . Cela vous aidera à anticiper les différents problèmes et ça évitera de voir des entreprises mettre la clé sous la porte à cause d’un simple sujet de rendering (déjà vu).
N’hésitez pas à commenter ci-dessous pour apporter des éléments complémentaires, rectificatifs ou poser vos questions.
Vous pouvez consulter aussi mes autres articles sur le Javascript SEO :
Partagez votre avis, vos questions, vos recommandations ci-dessous