Pourquoi votre LCP est lent
Le LCP est une course entre la requête du navigateur pour votre page et la fin du rendu de ce plus grand élément. Presque tous les LCP lents remontent à l'un de ces quatre obstacles :
- Un Time to First Byte lent. Si le serveur met 2 secondes juste pour répondre, le LCP ne peut pas démarrer son chronomètre plus tôt que cela - tout ce qui suit hérite du retard.
- Une image d'en-tête non optimisée. Un PNG de 4 Mo servi à la taille d'affichage plutôt que dans un format compressé et correctement dimensionné est la cause la plus fréquente que nous observons.
- Du CSS ou JS bloquant le rendu dans le
<head>. Le navigateur ne peut rien afficher, y compris l'élément LCP, tant qu'il n'a pas terminé de télécharger et d'analyser les ressources bloquantes. - Une découverte tardive de la ressource. Si l'image LCP n'est référencée qu'au fond d'un
background-imageCSS ou chargée par JavaScript après l'hydratation, le navigateur ne sait même pas qu'il doit commencer à la récupérer avant bien plus tard qu'il ne le pourrait.
Comment identifier votre élément LCP
Deviner quel élément est votre LCP n'est pas fiable - cela change selon la taille du viewport et le contenu. Le Website Audit de Scanverra exécute une véritable passe Lighthouse à la fois sur un profil ordinateur et sur un viewport mobile de 375 px, et rapporte la valeur et le timing du LCP directement à partir de cette exécution, pas une estimation - vous observez donc la même métrique que celle que les données de terrain de Google finissent par refléter, pas un proxy de celle-ci.
Dans Chrome DevTools, vous pouvez aussi ouvrir le panneau Performance, enregistrer un chargement de page, et repérer le marqueur « LCP » dans la piste de timing - il met en surbrillance l'élément exact dans la page rendue lorsque vous le survolez.
Comment le corriger
1. Préchargez la ressource LCP réelle
Si le navigateur ne peut découvrir votre image d'en-tête qu'après avoir analysé le CSS ou exécuté du JS, informez-le plutôt de l'image dès le départ :
1export default function RootLayout() {
2 return (
3 <html lang="en">
4 <head>
5 <link
6 rel="preload"
7 as="image"
8 href="/hero.webp"
9 fetchPriority="high"
10 />
11 </head>
12 <body>{/* ... */}</body>
13 </html>
14 );
15}2. Marquez l'image LCP comme prioritaire
Si vous affichez l'image d'en-tête via une balise image au niveau composant, marquez-la comme ressource prioritaire afin qu'elle ne soit pas chargée en différé et qu'elle rivalise en premier pour la bande passante :
1<img
2 src="/hero.webp"
3 alt="Product dashboard overview"
4 width={1200}
5 height={630}
6 fetchPriority="high"
7 loading="eager"
8/>3. Compressez et dimensionnez correctement l'image elle-même
Servez de l'AVIF ou du WebP plutôt que du PNG/JPEG là où le navigateur le prend en charge, et n'envoyez jamais une image plus grande que la plus grande taille à laquelle elle sera réellement affichée - une image source de 3000 px de large réduite avec du CSS coûte toujours le téléchargement complet.
4. Réglez d'abord le TTFB
Précharger une image lente à charger ne corrige pas un serveur lent. Si le TTFB représente une part importante de votre budget LCP, corrigez-le d'abord - voir le guide TTFB ci-dessous - car toute autre optimisation LCP est plafonnée par le moment où le navigateur peut même commencer.
5. Supprimez les ressources bloquant le rendu du chemin critique
Différez ou chargez en asynchrone le JavaScript non critique, intégrez en ligne la petite quantité de CSS nécessaire pour le contenu au-dessus de la ligne de flottaison, et chargez le reste de votre feuille de style sans bloquer le premier affichage.
Comment Scanverra détecte les problèmes de LCP
Les contrôles de performance de Scanverra exécutent un véritable audit Lighthouse sur votre URL en direct, à la fois sur ordinateur et sur un viewport mobile de 375 px, et rapportent le timing LCP réel de cette exécution aux côtés des autres Core Web Vitals - ce n'est ni une estimation synthétique ni un chiffre tiers mis en cache.