Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🌐
Web 15 min intermediaire

SSR vs SSG vs ISR : quand utiliser quoi

Sommaire

Contexte et enjeux

Les techniques de rendu côté serveur (Server-Side Rendering - SSR), de génération statique (Static Site Generation - SSG) et d'indexation progressive (Incremental Static Regeneration - ISR) sont des méthodes populaires pour améliorer les performances, la vitesse et l'accessibilité des sites web modernes. Ces approches offrent des avantages distincts en termes de SEO, de charge des pages et de temps d'interaction utilisateur.

Concepts cles

Server-Side Rendering (SSR)

Définition : Le SSR est un processus où le serveur génère le HTML complet d'une page avant de l'envoyer au client. Le client reçoit immédiatement une version complète et rendu du contenu, ce qui peut améliorer considérablement les performances en termes de temps de réponse initial.

Avantages :

  • Meilleure interactivité dès le premier affichage.
  • SEO optimale car le moteur de recherche voit le HTML complet.
  • Supporte des applications complexes avec des états dynamiques.

Inconvénients :

  • Coût CPU et réseau plus élevé en raison de la génération du contenu côté serveur.
  • Temps de réponse plus long pour les premiers vues si la mise en page est complexe.

Exemple : React, Vue.js, Angular

Static Site Generation (SSG)

Définition : Le SSG génère le HTML statique du site entier à l'avance et stocke ces fichiers sur le serveur. Lorsqu'un utilisateur demande une page, le serveur retourne simplement le fichier pré-généré.

Avantages :

  • Temps de réponse extrêmement rapide pour les visiteurs.
  • Coût moins élevé en termes de ressources du serveur et du temps CPU.
  • Meilleure sécurité car le code source n'est pas exécuté côté client.

Inconvénients :

  • Ne prend pas en compte les interactions utilisateur dynamiques.
  • Besoin d'une régénération complète du site pour chaque changement, ce qui peut être coûteux et chronophage.

Exemple : Next.js (React), Gatsby (React), Nuxt.js (Vue.js)

Incremental Static Regeneration (ISR)

Définition : L'ISR est une combinaison de SSG et de SSR. Il génère le contenu statique à l'avance mais permet de régénérer les pages dynamiques à la demande. Les pages qui sont souvent consultées seront pré-générées, tandis que les moins accessibles seront rendues côté serveur.

Avantages :

  • Meilleure performance pour les pages couramment visitées.
  • Supporte des interactions utilisateur dynamiques grâce au SSR.
  • Temps de réponse rapide pour les visiteurs et coûts réduits en termes de ressources.

Inconvénients :

  • Complexité accrue en raison du processus de régénération incrémentielle.
  • Coût plus élevé initial pour la mise en place et le support continu.

Exemple : Next.js (React)

Guide pratique pas-a-pas

Choix entre SSR, SSG et ISR

  1. Évaluer la fréquence d'accès :

    • SSR : Pour des pages qui sont souvent consultées mais nécessitent une interaction utilisateur dynamique.
    • SSG : Pour des pages statiques qui ne changent pas fréquemment et ont besoin de performances optimales.
    • ISR : Pour des pages couramment visitées avec du contenu qui peut changer occasionnellement.
  2. Considérer les contraintes techniques :

    • SSR : Nécessite une architecture back-end capable de gérer la génération du contenu côté serveur.
    • SSG : Peut être utilisé avec des frameworks front-end comme React ou Vue.js.
    • ISR : Supporte les mêmes frameworks que SSG et ajoute le processus de régénération incrémentielle.
  3. Budget et ressources :

    • SSR : Coût plus élevé en termes de ressources du serveur et du temps CPU.
    • SSG : Moins coûteux initialement mais nécessite une mise en place régulière des régénéraisons.
    • ISR : Offre un équilibre entre les deux, avec des coûts intermédiaires.

Configuration

SSR (React)

import React from 'react';
import ReactDOMServer from 'react-dom/server';

const App = () => <h1>Hello, World!</h1>;

const html = ReactDOMServer.renderToString(<App />);
console.log(html);

SSG (Next.js)

pages/index.js

export default function Home() {
  return <h1>Hello, Next.js!</h1>;
}

export async function getStaticProps() {
  // Requête de données
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();

  return {
    props: { data },
  };
}

ISR (Next.js)

pages/posts/[id].js

export default function Post({ post }) {
  return <div>{post.title}</div>;
}

export async function getStaticPaths() {
  // Récupérer les ID des posts
  const res = await fetch('https://api.example.com/posts');
  const posts = await res.json();

  const paths = posts.map((post) => ({
    params: { id: post.id.toString() },
  }));

  return { paths, fallback: 'blocking' };
}

export async function getStaticProps({ params }) {
  // Récupérer les données du post
  const res = await fetch(`https://api.example.com/posts/${params.id}`);
  const post = await res.json();

  return {
    props: { post },
    revalidate: 10, // Relancer la régénération toutes les 10 secondes
  };
}

Comparatif ou tableau recapitulatif

Caractéristique SSR SSG ISR
Temps de réponse initiale Rapide, car le contenu est généré côté serveur. Très rapide, car le contenu est statique. Rapid pour les pages pré-générées.
Coût Coût plus élevé en termes de ressources du serveur et du temps CPU. Moins coûteux initialement mais nécessite une mise en place régulière des régénéraisons. Offre un équilibre entre les deux, avec des coûts intermédiaires.
Support des interactions Oui, le contenu peut changer à la demande. Non, il ne prend pas en compte les interactions utilisateur dynamiques. Oui, supporte des interactions utilisateur dynamiques grâce au SSR.
Utilisation pour quel type de site ? Sites avec une interaction utilisateur importante ou nécessitant un SEO optimale. Sites statiques qui ne changent pas fréquemment et ont besoin de performances optimales. Sites couramment visités avec du contenu qui peut changer occasionnellement.

Retour d'experience concret

En tant qu'expert technologique, j'ai observé que le choix entre SSR, SSG et ISR dépend des besoins spécifiques de chaque projet. Pour les sites critiques nécessitant un SEO optimale et une interaction utilisateur importante, SSR est généralement la meilleure solution. Pour les pages statiques qui ne changent pas fréquemment, SSG offre une excellente performance avec des coûts réduits. L'ISR est idéal pour les sites couramment visités nécessitant des mises à jour régulières.

Checklist ou plan d'action

  1. Évaluer la fréquence d'accès :

    • Analyser le trafic et l'utilisation du site.
    • Déterminer quelles pages sont les plus consultées.
  2. Choisir le type de rendu :

    • SSR pour des interactions utilisateur importantes ou SEO optimale.
    • SSG pour des pages statiques qui ne changent pas fréquemment.
    • ISR pour des sites couramment visités nécessitant des mises à jour régulières.
  3. Configurer le projet :

    • Installer les dépendances nécessaires (React, Next.js, etc.).
    • Mettre en place la configuration du rendu côté serveur ou statique.
  4. Déployer et tester :

    • Déployer le site sur un environnement de production.
    • Effectuer des tests pour vérifier les performances et l'accessibilité.
  5. Monitorez et optimisez :

    • Surveiller les performances du site en temps réel.
    • Optimiser les pages selon les résultats des analyses.

En suivant ce guide étape par étape, vous serez bien équipé pour choisir la méthode de rendu appropriée pour votre projet web, maximisant ainsi ses performances et sa rentabilité.

Un projet tech a lancer ?

Besoin d'un accompagnement ? Decrivez votre projet pour des recommandations.

Recevoir des conseils

Questions frequentes

Quelle est la différence entre SSR, SSG et ISR ?
SSR (Server Side Rendering) génère du contenu côté serveur à chaque requête, SSG (Static Site Generation) génère des pages statiques au build et ISR (Incremental Static Regeneration) génère des pages statiques qui peuvent être régénérées de manière incrémentielle.
Quand utiliserai-je SSR ?
Utilisez SSR lorsque vous avez besoin d'une expérience utilisateur instantanée et vous voulez garantir que le contenu est disponible immédiatement à chaque visiteur, même si cela signifie un impact sur les performances initiales.
Quelle est l'avantage de ISR par rapport à SSG ?
ISR offre la possibilité de mettre à jour dynamiquement le contenu des pages statiques générées au build, ce qui peut être utile pour du contenu qui change fréquemment sans avoir besoin de reconstruire tout le site.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.