Avec la sortie de Drupal 11, l'écosystème continue sa marche en avant vers un web plus rapide, plus accessible et plus sécurisé. Dans cette quête de performance, la gestion des images reste un enjeu capital. Un chargement trop lourd pénalise l'expérience utilisateur et votre positionnement SEO. La solution la plus efficace reste le lazy loading.
Ce guide complet est mis à jour pour Drupal 11. Nous allons détailler comment implémenter le chargement paresseux, en insistant sur la méthode native, qui est désormais le standard incontesté. Nous verrons aussi dans quels cas spécifiques un module externe peut encore être pertinent, et surtout, comment mesurer l'impact de vos actions sur les Core Web Vitals comme le Largest Contentful Paint (LCP).
Pourquoi le lazy loading est crucial pour la performance de votre site Drupal
Les principes fondamentaux de la performance web ne changent pas, ils se renforcent. Le lazy loading est plus que jamais un pilier de l'optimisation.
Comprendre le chargement lazy loading
Pour rappel, le lazy loading est une technique qui consiste à ne charger les images que lorsqu'elles s'apprêtent à devenir visibles pour l'utilisateur. Au lieu de tout charger d'un coup (méthode "eager"), on diffère le chargement des ressources non essentielles, ce qui accélère radicalement l'affichage initial de la page.

L'impact direct sur les Core Web Vitals : LCP et FID expliqués
Les Core Web Vitals de Google sont au cœur de l'évaluation de l'expérience utilisateur. Le lazy loading a un effet bénéfique direct sur :
- Largest Contentful Paint (LCP) : en libérant de la bande passante pour les éléments les plus importants situés en haut de page (votre logo, votre titre, votre image de bannière), le LCP est considérablement amélioré.
- First Input Delay (FID) / Interaction to Next Paint (INP) : en réduisant la charge de travail initiale du navigateur, la page devient interactive plus rapidement. L'utilisateur peut cliquer et naviguer sans délai.
Méthode 1 : le lazy loading natif de Drupal 11 (le standard par défaut)
Drupal 11 solidifie les avancées de son prédécesseur. Le lazy loading natif n'est plus seulement une option, c'est la méthode recommandée et intégrée par défaut.
Comment ça marche ? L'attribut loading="lazy" en coulisses
Le mécanisme reste le même, car il est basé sur un standard du web : Drupal 11 ajoute l'attribut HTML loading="lazy"
aux balises <img>
qui ne sont pas immédiatement visibles. C'est une instruction nativement comprise par tous les navigateurs modernes, ne nécessitant aucun JavaScript additionnel.
Activer le lazy loading natif via l'interface (pas-à-pas)
Sur une nouvelle installation de Drupal 11, le lazy loading est activé par défaut. Pour le vérifier ou l'ajuster :
- Naviguez vers
Configuration
>Création de contenu
>Formats de texte et éditeurs
. - Configurez le format de texte concerné (ex:
Texte enrichi
). - Vérifiez que le filtre "Lazy-load images" est bien présent et activé dans la section "Filtres activés". Son positionnement dans la liste des filtres est important ; il doit généralement s'exécuter après les filtres qui génèrent des balises
<img>
(comme l'alignement ou les légendes).

Pour aller plus loin : contrôle fin avec les templates Twig
Ce besoin essentiel ne change pas. L'optimisation du LCP exige que votre image principale ne soit jamais en lazy load. La méthode pour y parvenir avec Twig dans votre thème reste identique et tout aussi puissante dans Drupal 11.
Pour retirer le lazy loading d'une image spécifique, surchargez le template image.html.twig
et retirez l'attribut loading
:
{# Fichier : mon_theme/templates/image.html.twig #}
{# On s'assure que cette image se charge immédiatement pour optimiser le LCP. #}
<img{{ attributes.removeAttribute('loading') }} />
Avantages et limitations de l'approche native
Avantages :
- Intégration parfaite : Au cœur de Drupal 11, aucune maintenance requise.
- Performance brute : Aucune surcharge JavaScript, la méthode la plus rapide.
- Fiabilité : Basé sur un standard web stable et universel.
Limitations :
- Elles sont inchangées : pas d'effets visuels (fondu, etc.) et le seuil de déclenchement est géré par le navigateur.
Méthode 2 : utiliser un module JavaScript (pour des besoins spécifiques)
Avec la maturité de la solution native, le recours au module Lazy devient un choix de niche, motivé par des besoins précis d'expérience utilisateur.
Quand la méthode native ne suffit pas
En 2025 et avec Drupal 11, les raisons de choisir un module sont limitées, mais valides :
- Vous avez une exigence artistique forte pour des transitions visuelles animées (effet de fondu, de flou progressif).
- Vous souhaitez implémenter des placeholders de très basse qualité (LQIP) pour une raison esthétique précise.
Tutoriel : installer et configurer un module compatible Drupal 11
- Installation via Composer :
composer require drupal/lazy
- Activation via Drush :
drush en lazy -y
drush cr
Avantages et inconvénients de l'utilisation d'un module
Avantages :
- Personnalisation visuelle : Le seul véritable avantage restant sur Drupal 11.
Inconvénients :
- Dépendance externe : Ajoute une complexité de maintenance (mises à jour, compatibilité).
- Surcharge de performance : Même s'il est minime, un script JS reste un script JS à télécharger, parser et exécuter.
Native vs. module : la recommandation pour Drupal 11
Le débat est désormais plus simple que jamais.
Comparaison des deux approches
Voici un résumé des points forts et faibles de chaque méthode pour vous aider à décider :
- Méthode Native (
loading="lazy"
)- Simplicité : c'est le standard intégré par défaut, il n'y a rien à installer.
- Performance : aucune surcharge JavaScript, c'est la méthode la plus rapide possible.
- Personnalisation : vous ne pouvez pas contrôler les animations ou le seuil de déclenchement.
- Module JavaScript (ex: Lazy-load)
- Simplicité : ajoute une dépendance à maintenir.
- Performance : implique une légère surcharge due au script JavaScript.
- Personnalisation : vous contrôlez entièrement les animations, les placeholders, les seuils de déclenchement, etc.
Notre recommandation : le bon choix selon votre projet
Pour Drupal 11, la règle est claire : Utilisez la méthode native dans 99% des cas. Elle est performante, robuste, et parfaitement intégrée. Passez votre temps à bien la configurer (notamment en désactivant le lazy load sur l'image LCP) plutôt qu'à chercher un module.
N'envisagez un module que si une animation à l'apparition des images est une fonctionnalité non-négociable spécifiée dans votre cahier des charges.
Mesurer l'impact : prouvez l'efficacité de vos optimisations
Cette section est intemporelle. Les outils et la méthode pour mesurer les gains de performance restent les mêmes.
Analysez le comportement avec l'onglet Network des outils de développement
- Analysez le comportement avec l'onglet Network des outils de développement de votre navigateur.
- Validez les gains avec un test Avant / Après sur
, en vous concentrant sur l'amélioration du LCP.Google PageSpeed Insights

Conclusion : le lazy loading, un standard de performance sur Drupal 11
Sur Drupal 11, le lazy loading n'est plus une optimisation, c'est une fondation. La solution native, mature et performante, répond à la quasi-totalité des besoins. Votre rôle en tant que développeur ou webmaster est de vous assurer qu'elle est utilisée à bon escient : activée partout, sauf sur les quelques éléments critiques en haut de page.
En maîtrisant cette simple configuration, vous garantissez une expérience utilisateur rapide, des Core Web Vitals optimisés et un site Drupal 11 résolument moderne.
FAQ - questions fréquentes sur le lazy loading et Drupal
1. Y a-t-il des changements majeurs sur le lazy loading entre Drupal 10 et 11 ? Non, pas de changement majeur dans le mécanisme. L'évolution est dans la consolidation : la méthode native est encore plus ancrée comme le standard par défaut, rendant les modules externes moins nécessaires.
2. Dois-je appliquer le lazy loading à toutes mes images ? La réponse est toujours non. La règle d'or persiste : pas de lazy loading sur les images visibles sans défilement (above the fold), en particulier l'image qui constitue votre LCP.
3. Cette méthode fonctionne-t-elle aussi pour les arrières-plans CSS (background-image) ? Non. L'attribut loading="lazy"
ne fonctionne que pour les balises <img>
et <iframe>
. Pour les arrières-plans CSS, il faut utiliser des techniques JavaScript spécifiques, souvent basées sur l'API Intersection Observer
. C'est l'un des rares cas où un module de lazy loading plus avancé pourrait encore être utile.