Une application Angular utilise par défaut le Client-Side Rendering (CSR) pour rendre ses pages. Mais il existe deux techniques qui apportent des avantages par rapport au CSR.
Avec Angular SSR (Angular Universal), nous avons la possibilité de rendre notre application avec du Server-Side Rendering (SSR), mais aussi avec du Static Site Generation (SSG) ou Prerendering.
Nous allons voir dans cet article la différence entre ces deux techniques et quand privilégier l’une ou l’autre.
Si vous préférez le format vidéo, voici la vidéo YouTube correspondante à cet article.
Les bénéfices de fournir des pages complètes
Avec le SSR ou le SSG, nous fournissons directement une page complète à l'utilisateur. Cela apporte beaucoup d’avantages notamment en termes d’expérience utilisateur, de performances et de SEO.
Pour comprendre en profondeur le fonctionnement du Server-Side Rendering et la différence avec le Client-Side Rendering, allez voir l'article Comprendre le Server Side Rendering avec Angular.
La différence de fonctionnement entre le Server-Side Rendering et le Static Site Generation se trouve dans le moment où l'on génère nos pages.
Le Server-Side Rendering permet de rendre nos pages côté serveur à chaque requête du client, à la demande.
Le rendement de la page se fait côté serveur à chaque requête du client
Lorsque le client veut accéder à notre site, celui-ci envoi une requête au serveur. Le serveur génère/rend la page sur le moment, puis l'envoi au client.
Le Static Side Generation nous permet de générer nos pages lors du build de l'application lorsqu'on exécute la commande "ng build".
La page générée est ensuite réutilisée à chaque requête du client.
Le serveur renvoi une page déjà prérendue au client
Maintenant comparons les avantages et les inconvénients entre ces deux techniques.
Le Server-Side Rendering a des avantages et des inconvénients par rapport au Static Site Generation.
Les avantages :
Les inconvénients :
Le Static Site Generation a aussi des avantages et des inconvénients par rapport au Server-Side Rendering.
Les avantages :
Les inconvénients :
Une image valant 1000 mots, voici des images pour bien assimiler les avantages et les inconvénients des deux techniques.
Contexte utilisateur
Avec le Server-Side Rendering nous pouvons générer une page contenant du contexte utilisateur.
Page rendue côté serveur avec du contexte utilisateur grâce au SSR (Impossible à réaliser avec du SSG)
Ci-dessus, nous voyons dans l'onglet Preview que la page générée possède plusieurs contexte utilisateur : Le bouton "Se déconnecter", le lien "Mes favoris" et les Articles favoris de l'utilisateur.
Générer une page avec du contexte utilisateur est impossible avec du SSG.
Time To First Byte
Avec le SSR nous rendons nos pages à chaque requête du client et ce rendement des pages peut prendre du temps.
Avec du Static Site Generation, la page étant déjà rendue, nous pouvons la fournir directement au client sans avoir un "temps de rendement".
Différence du temps de réponse du serveur entre le SSR (101ms) et le SSG (37ms)
Ci-dessus, nous voyons que la page rendue en SSG est renvoyée plus rapidement au client, en 37ms contre 101ms pour le SSR.
Démonstration avec le SSG ❌
Un des plus gros inconvénient du Static Site Generation est la nécessité de rebuild notre application si nous voulons appliquer des modifications à nos pages.
Avec du SSG, la page modifiée en base de données n'est pas mis à jour
Ci-dessus, nous voyons que le titre de la page n'est pas mis à jour malgré la modification du titre en base de données ❌
Démonstration avec le SSR ✅
Et le plus gros avantage du Server Side Rendering est qu'il fourni toujours des pages à jour au client.
Le SSR permet de toujours renvoyer une page à jour au client
Ci-dessus, nous voyons que le titre de la page est directement mis à jour après la modification du titre en base de données ✅
Voyons maintenant quelle technique utiliser entre le SSR et le SSG.
SSR = Le choix qui fonctionne toujours
Le SSR rendant les pages à la demande, celui-ci est compatible avec l’ensemble de vos pages, qu’elles soient statiques ou dynamiques, qu’elles contiennent du contexte utilisateur ou non.
C'est le choix qui fonctionnera toujours et qui vous apportera tous les bénéfices de rendre vos pages côté serveur.
SSG = Site statique / site vitrine
Le SSG va être parfaitement adapté pour les sites qui possèdent uniquement du contenu statique, comme par exemple, le site vitrine d’un artisan avec des pages qui ne changent que très rarement.
Cela vous permettra d’héberger facilement votre site sur un CDN (généralement gratuit) plutôt que de payer pour un serveur.
SSR et SSG en même temps
Enfin, il faut savoir que nous pouvons utiliser les deux techniques sur nos projets. Nous pouvons avoir par exemple un site avec 80% de SSR pour les pages dynamiques et 20% de SSG pour des pages statiques.
Voici des exemples concrets qui peuvent vous aider à choisir entre le SSR et le SSG pour vos projets.
Nous avons vu que le SSR et le SSG ont chacun leurs avantages et inconvénients.
Le Server-Side Rendering est le choix par défaut qui fonctionnera sur toutes vos applications et le Static Site Generation sera choisi seulement dans des cas précis.
Abonnez vous pour ne pas rater les nouveaux articles !
© Gaëtan Rouziès - Tous Droits Réservés