Les images sont cruciales sur un site web mais posent des problèmes de performance si elles ne sont pas implémentées correctement : chargement très lent, consommation de bande passante élevée…
Cela peut devenir très problématique pour l’utilisateur final, surtout lors de la navigation mobile.
La balise HTML <img>
ne permet pas de résoudre ces problèmes, c’est pourquoi Next.js fournit un composant Image
pour la remplacer et l’améliorer.
Le composant Image permet d’optimiser et de servir les images de manière efficace. Le composant va déclencher :
En particulier, le CLS mesure les sauts dans la page quand l’image est chargée et que sa dimension réelle devient connue. On veut bien sûr éliminer ces sauts.
En utilisant le composant Image
au lieu de la balise <img>
standard, vous profitez directement de tous ces apports sans avoir à optimiser manuellement chaque fichier en amont.
<img>
Rien de mieux qu’un tableau récapitulatif pour bien comprendre ce qu’il se passe quand on utilise le composant Image
:
Code | Évite le Layout Shift ? | Optimisation des fichiers ? |
---|---|---|
<img src={...} /> | Non | Non |
<img src={...} width={500} height={500} /> | Oui | Non |
import img from "./img.png"; <Image src={img} /> | Oui, largeur/hauteur déduites automatiquement | Oui |
import img from "./img.png"; <Image src={img} width={500} height={500} /> | Oui, respecte les attributs width/height | Oui |
<Image src="/url/img.png" width={500} height={500} /> | Oui, respecte les attributs width/height | Oui |
<Image src="/url/img.png" /> | Non, génère une erreur | N/A |
On comprend évidemement l’intérêt d’optimiser la taille du fichier image, mais il ne faut pas sous-estimer l’intérêt d’éviter au passage les shifts.
Vous remarquerez que si vous utilisez une image distante, via son URL, il faut bien configurer sa taille et sa hauteur pour éviter ces sauts de mise en page.
La documentation de Next.js vous permettra d’aller plus loin pour comprendre tous les cas particuliers.
Bien que le composant Image
de Next.js soit très efficace, vous pouvez avoir besoin de plus de contrôle sur le processus d’optimisation.
Voici quelques approches alternatives :
Vous connaissez maitenant les grandes lignes, mais le mieux pour vraiment comprendre le composant Image, c’est de l’essayer !
Vous avez apprécié cette ressource ?
Découvrez toutes nos formations Next.js et Astro en présentiel ou en distanciel