Différer le chargement des iframes (loading=lazy)
Allégez vos pages en différant le chargement des iframes hors écran avec loading=lazy : moins de données, un FCP et un LCP améliorés.
Les intégrations tierces (lecteurs vidéo, publications de réseaux sociaux, cartes, annonces) reposent très souvent sur des iframes. Or chaque iframe télécharge ses propres ressources, parfois plusieurs mégaoctets de données et de JavaScript, même lorsque l’utilisateur ne fait jamais défiler la page jusqu’à elle. Ce gaspillage ralentit l’ensemble de la page et consomme de la bande passante inutilement.
Différer le chargement des iframes situées hors de l’écran consiste à ne les charger que lorsque l’utilisateur s’en approche par défilement. Pour le SEO, c’est un levier direct : vous libérez de la bande passante pour les ressources visibles, vous accélérez le rendu initial et vous améliorez plusieurs signaux Core Web Vitals que Google prend en compte, dans le prolongement du travail pour différer images et iframes.
Les intégrations tierces sont des gouffres silencieux : un lecteur vidéo ou une carte embarquée télécharge ses mégaoctets même si l’utilisateur ne descend jamais jusqu’à elle. Différer ces iframes hors écran avec l’attribut loading, c’est cesser de payer pour du contenu que personne ne regarde. Je commence toujours par les plus lourdes, vidéos et réseaux sociaux en tête.
À quoi sert le chargement différé des iframes
Le principe est simple : le navigateur retarde la récupération de l’iframe tant qu’elle reste éloignée du viewport, puis la charge juste avant qu’elle n’entre à l’écran. L’utilisateur ne perçoit aucune différence, mais le navigateur évite des téléchargements coûteux pour du contenu jamais consulté.
Les mesures de Chrome sont éloquentes : le chargement différé des iframes hors écran peut générer une économie de données moyenne de 2 à 3 %, réduire le First Contentful Paint de 1 à 2 % à la médiane et améliorer la réactivité au 95e centile. Sur les appareils à réseau contraint, la bande passante ainsi libérée profite directement aux ressources qui déterminent le Largest Contentful Paint, tandis que d’autres intégrations gagnent à être traitées comme les vidéos à différer.
Utiliser l'attribut loading
Le chargement différé natif s’active avec un seul attribut HTML, sans dépendance JavaScript. L’attribut loading accepte deux valeurs : lazy pour différer la ressource hors écran, et eager pour la charger immédiatement. Ne pas indiquer l’attribut revient au comportement eager par défaut.
La syntaxe est identique sur l’élément iframe et sur l’élément image. Pensez à toujours renseigner les attributs width et height pour réserver l’espace et éviter les décalages de mise en page.
<!-- Iframe différée -->
<iframe src="https://monsite.fr"
loading="lazy"
width="600"
height="400"></iframe>
<!-- Iframe chargée immédiatement -->
<iframe src="https://monsite.fr"
width="600"
height="400"></iframe>
Différer une iframe créée en JavaScript
Si vous générez vos iframes dynamiquement, l’attribut reste pris en charge : il suffit de définir la propriété loading sur l’élément avant de l’insérer dans le document. Le navigateur appliquera alors le même comportement différé qu’avec une iframe écrite directement dans le HTML.
var iframe = document.createElement('iframe');
iframe.src = 'https://monsite.fr';
iframe.loading = 'lazy';
document.body.appendChild(iframe);
Les intégrations à différer en priorité
Les intégrations multimédias et sociales sont les candidates idéales, car elles apparaissent souvent en bas de page et pèsent lourd au chargement initial, à l’image des régies publicitaires qu’il faut savoir charger sans ralentir le site. Le tableau ci-dessous récapitule les gains observés par Google sur quelques services populaires.
| Intégration | Économie au chargement initial | Bonne candidate |
|---|---|---|
Vidéo YouTube intégrée |
Environ 500 ko |
Oui, souvent hors écran |
Élément intégré Spotify |
Environ 514 ko |
Oui |
Publication Instagram |
Environ 100 ko (script évité) |
Oui, en fin d’article |
Bouton J’aime Facebook |
Environ 215 ko dont 197 ko de JS |
Oui, via data-lazy |
L’attribut loading n’applique aucune heuristique automatique : il diffère ce que vous lui demandez de différer. Les premières expériences de Chrome épargnaient les iframes masquées servant aux communications ou à l’analyse, mais ce n’est pas le cas de l’attribut. Évitez donc d’ajouter loading=lazy à une iframe invisible et critique pour votre suivi : elle resterait chargée différée et pourrait fausser vos données.
À faire
- différer les iframes situées sous la ligne de flottaison
- renseigner width et height
- tester l’affichage après défilement
- conserver eager pour les iframes visibles d’emblée
À éviter
- différer une iframe critique au-dessus de la ligne de flottaison
- oublier les dimensions et provoquer des décalages
- appliquer lazy à des iframes de mesure invisibles
- multiplier les bibliothèques quand le natif suffit
Points clés à retenir
- Ajoutez loading=lazy aux iframes tierces hors écran
- Gardez eager pour le contenu immédiatement visible
- Renseignez toujours width et height
- Activez data-lazy sur les plug-ins Facebook compatibles
- Réservez une bibliothèque tierce aux navigateurs anciens ou aux seuils personnalisés
Le chargement différé des iframes est un gain de performance rapide à mettre en place.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
Pourquoi différer le chargement des iframes améliore-t-il la performance ?
- Différer une iframe compresse automatiquement son contenu
- Les iframes ne se chargent jamais sans un déclenchement manuel de toute façon
- Chaque iframe télécharge ses propres ressources, parfois plusieurs Mo, même si l'utilisateur ne la voit jamais
Chaque iframe télécharge ses propres ressources, parfois plusieurs mégaoctets de données et de JavaScript, même lorsque l’utilisateur ne fait jamais défiler jusqu’à elle.
-
Que se passe-t-il si l'on n'indique pas l'attribut loading sur une iframe ?
- Le comportement par défaut est eager : l'iframe se charge immédiatement
- L'iframe applique une heuristique automatique selon sa position
- Le comportement par défaut est lazy : l'iframe est différée automatiquement
L’attribut
loadingacceptelazyeteager; ne pas l’indiquer revient au comportementeagerpar défaut. L’attribut n’applique aucune heuristique automatique. -
Quelles intégrations sont les meilleures candidates au chargement différé ?
- Les intégrations multimédias et sociales, souvent placées en bas de page et lourdes au chargement
- Les iframes de mesure invisibles placées dans l'en-tête
- Les iframes critiques situées au-dessus de la ligne de flottaison
Les intégrations multimédias et sociales sont idéales : elles apparaissent souvent en bas de page et pèsent lourd au chargement initial. Une iframe critique au-dessus de la ligne de flottaison doit rester en
eager.
Besoin d'un accompagnement SEO ?
Des intégrations tierces ralentissent vos pages et pénalisent vos Core Web Vitals ?