Comment rendre votre contenu principal plus rapide.
Mise Ă jour
Je ne vois aucun contenu utile! Pourquoi le chargement prend-il autant de temps? đ
Un facteur contribuant à une mauvaise expérience utilisateur est le temps qu'il faut à un utilisateur pour voir un contenu
rendu à l'écran. First Contentful Paint (FCP) mesure combien de temps il
prend pour le contenu DOM initial Ă rendre, mais il ne capture pas combien de temps il a fallu le plus grand
(généralement plus significatif) sur la page à rendre.
Largest Contentful Paint (LCP) is a Core Web
MĂ©trique des valeurs vitales et mesure le moment oĂč l'Ă©lĂ©ment de contenu le plus important de la
la fenĂȘtre devient visible. Il peut ĂȘtre utilisĂ© pour dĂ©terminer quand le contenu principal de la page est terminĂ©
rendu à l'écran.
Les causes les plus courantes d'un mauvais LCP sont:
Temps de réponse du serveur lents
Plus il faut de temps Ă un navigateur pour recevoir le contenu du serveur, plus le rendu prend du temps
quoi que ce soit sur l'écran. Un temps de réponse du serveur plus rapide améliore directement chaque chargement de page
métrique, y compris LCP.
Avant toute chose, amĂ©liorez comment et oĂč votre serveur gĂšre votre contenu. Utiliser Temps pour la premiĂšre
Octet (TTFB) pour mesurer les temps de réponse de votre serveur. Vous pouvez
améliorez votre TTFB de différentes maniÚres:
- Optimisez votre serveur
- Diriger les utilisateurs vers un CDN à proximité
- Ressources de cache
- Serve HTML pages cache-first
- Ătablissez rapidement des connexions tierces
Optimisez votre serveur
ExĂ©cutez-vous des requĂȘtes coĂ»teuses qui prennent beaucoup de temps Ă rĂ©pondre Ă votre serveur? Ou alors
y a-t-il d'autres opérations complexes qui se produisent cÎté serveur qui retardent le processus de retour de la page
contenu? L'analyse et l'amélioration de l'efficacité de votre code cÎté serveur améliorera directement le
le temps nécessaire au navigateur pour recevoir les données.
Au lieu de simplement servir immédiatement une page statique sur une demande de navigateur, de nombreux sites Web cÎté serveur
les frameworks doivent créer la page Web de maniÚre dynamique. En d'autres termes, plutÎt que d'envoyer simplement un
fichier HTML complet qui est dĂ©jĂ prĂȘt lorsque le navigateur le demande, les frameworks doivent s'exĂ©cuter
logic to construct the page. This could be due to pending results from a database mettre en doute or even
because components need to be generated into balisage by a UI cadre (such as
Réagir). De nombreux frameworks Web qui s'exécutent sur le serveur
have performance guidance that you can use to speed up this process.
Diriger les utilisateurs vers un CDN à proximité
Un réseau de diffusion de contenu (CDN) est un réseau de serveurs répartis dans de nombreux endroits différents. Si
le contenu de votre page Web est hébergé sur un seul serveur, votre site Web se chargera plus lentement pendant
les utilisateurs qui sont gĂ©ographiquement plus Ă©loignĂ©s parce que les requĂȘtes de leur navigateur doivent littĂ©ralement voyager
autour du monde. Pensez Ă utiliser un CDN pour vous assurer que vos utilisateurs nâont jamais Ă attendre le rĂ©seau
demandes Ă des serveurs lointains.
Ressources de cache
Si votre HTML est statique et n'a pas besoin de changer Ă chaque demande, la mise en cache peut l'empĂȘcher de
being recreated unnecessarily. By storing a copie of the generated HTML on disk, server-side caching
peut réduire le TTFB et minimiser l'utilisation des ressources.
En fonction de votre chaßne d'outils, il existe de nombreuses façons d'appliquer la mise en cache du serveur:
- Configurer les proxys inverses (Vernis,
nginx) pour servir du contenu mis en cache ou agir en tant que serveur de cache lorsque
installé devant un serveur d'applications - Configurez et gérez votre fournisseur de cloud
(Firebase,
AWS,
bleu azur) comportement du cache - Utilisez un CDN qui fournit des serveurs périphériques afin que votre contenu soit mis en cache et stocké plus prÚs de
vos utilisateurs
Servir les pages HTML en premier
Une fois installé, un un service
ouvrier s'exécute dans le navigateur
arriĂšre-plan et peut intercepter les demandes du serveur. Ce niveau de contrĂŽle programmatique du cache
permet de mettre en cache tout ou partie du contenu de la page HTML et de ne mettre Ă jour le cache que lorsque le
le contenu a changé.
Le graphique suivant montre comment les distributions LCP ont été réduites sur un site utilisant ce modÚle:

Le graphique montre la distribution du LCP à partir d'un seul site au cours des 28 derniers jours, segmentée par
état du service worker. Notez à quel point les chargements de page ont une valeur LCP plus rapide aprÚs le premier HTML du cache
le service de page a été introduit dans le technicien de service (partie bleue du graphique).
Ătablissez rapidement des connexions tierces
Les demandes de serveur à des origines tierces peuvent également avoir un impact sur LCP, en particulier si elles doivent afficher
contenu critique sur la page. Utiliser rel = "préconnecter"
pour informer le navigateur que votre page a l'intention de
établissez une connexion dÚs que possible.
<relier rel="préconnecter" href="https://example.com">
Vous pouvez aussi utiliser dns-prefetch
to resolve DNS lookups faster.
<relier rel="dns-prefetch" href="https://example.com">
Bien que les deux conseils fonctionnent différemment, pensez à utiliser dns-prefetch
comme solution de secours pour les navigateurs
ne supporte pas préconnecter
.
<diriger>
âŠ
<relier rel="préconnecter" href="https://example.com">
<relier rel="dns-prefetch" href="https://example.com">
</diriger>
Render blocking JavaScript et CSS
Avant qu'un navigateur puisse rendre un contenu, il doit analyser le balisage HTML dans une arborescence DOM. Le HTML
l'analyseur se mettra en pause s'il rencontre des feuilles de style externes () ou synchrone
Balises JavaScript ().
Scripts and stylesheets are both render blocking resources which delay FCP, and consequently LCP.
Reportez tout JavaScript et CSS non critiques pour accélérer le chargement du contenu principal de votre page Web.
Réduisez le temps de blocage CSS
Assurez-vous que seule la quantité minimale de CSS nécessaire bloque le rendu sur votre site avec le
Suivant:
- Réduire le CSS
- Différer les CSS non critiques
- CSS critique en ligne
Réduire le CSS
Pour une meilleure lisibilité, les fichiers CSS peuvent contenir des caractÚres tels que l'espacement, le retrait ou des commentaires.
Ces caractÚres sont tous inutiles pour le navigateur, et la réduction de ces fichiers garantira que
ils sont supprimés. En fin de compte, réduire la quantité de blocage CSS améliorera toujours le temps
prend pour rendre entiĂšrement le contenu principal de la page (LCP).
If you use a module bundler or build tool, include an appropriate brancher to minify CSS files on
chaque build:

Différer les CSS non critiques
Utilisez le Couverture onglet dans Chrome
DevTools pour trouver tout CSS inutilisé sur votre page Web.
Optimiser:
-
Supprimez complÚtement tout CSS inutilisé ou déplacez-le vers une autre feuille de style s'il est utilisé sur un autre
page de votre site. -
Pour tout CSS non nécessaire pour le rendu initial, utilisez
loadCSS pour charger des fichiers
de maniÚre asynchrone, qui exploiterel = "précharge"
eten charge
.<relier rel="précharge" href="stylesheet.css" as="style" en charge="this.rel='stylesheet'">

CSS critique en ligne
Intégrez tout CSS de chemin critique utilisé pour le contenu au-dessus de la ligne de flottaison en l'incluant directement dans .

L'intégration de styles importants élimine le besoin de faire une demande aller-retour pour récupérer les CSS critiques.
Le report du reste minimise le temps de blocage CSS.
Si vous ne pouvez pas ajouter manuellement des styles en ligne Ă votre site, utilisez une bibliothĂšque pour automatiser le processus. Quelque
exemples:

Réduisez le temps de blocage de JavaScript
Téléchargez et diffusez la quantité minimale de JavaScript nécessaire aux utilisateurs. Réduire la quantité de
le blocage de JavaScript entraßne un rendu plus rapide et, par conséquent, un meilleur LCP.
Cela peut ĂȘtre accompli en optimisant vos scripts de diffĂ©rentes maniĂšres:
Temps de chargement des ressources lents
Bien qu'une augmentation du temps de blocage CSS ou JavaScript se traduise directement par une dégradation des performances,
le temps nécessaire pour charger de nombreux autres types de ressources peut également affecter les temps de peinture. Les types de
les éléments qui affectent le LCP sont:
<img>
élémentséléments à l'intérieur d'un
élément
éléments (si spécifié, le
affiche l'image est
utilisé pour mesurer le LCP)- Un élément avec une image d'arriÚre-plan chargée via le
URL ()
fonction (par opposition Ă un CSS
pente) - Niveau bloc éléments
contenant des nĆuds de texte ou d'autres Ă©lĂ©ments de texte de niveau en ligne
Le temps nécessaire pour charger ces éléments s'ils sont rendus au-dessus du pli aura un effet direct sur
LCP. Il existe plusieurs façons de s'assurer que ces fichiers sont chargés le plus rapidement possible:
- Optimiser et compresser les images
- Précharger les ressources importantes
- Compresser les fichiers texte
- Fournissez différents actifs en fonction de la connexion réseau (service adaptatif)
- Mettre en cache les actifs Ă l'aide d'un service worker
Optimiser et compresser les images
Pour de nombreux sites, les images sont le plus grand élément visible lorsque la page a fini de se charger. héros
images, large carousels or banniĂšre images are all common examples of this.

L'amĂ©lioration du temps de chargement et de rendu de ces types d'images accĂ©lĂ©rera directement LCP. Ă
faites ceci:
- Envisagez de ne pas utiliser d'image en premier lieu. Si ce n'est pas pertinent pour le contenu,
retirez-le. - Compresser des images (avec Imagemin par exemple)
- Convertir les images dans des formats plus récents (JPEG 2000, JPEG XR ou WebP)
- Utilisez des images réactives
- Pensez Ă utiliser une image CDN
Jetez un Ćil Ă Optimiser votre
des images pour des guides et des ressources qui expliquent toutes ces techniques en détail.
Précharger les ressources importantes
Parfois, des ressources importantes dĂ©clarĂ©es ou utilisĂ©es dans un certain fichier CSS ou JavaScript peuvent ĂȘtre
récupéré plus tard que vous le souhaiteriez, comme une police cachée profondément dans l'un des nombreux fichiers CSS d'un
application.
Si vous savez qu'une ressource particuliĂšre doit ĂȘtre priorisĂ©e, utilisez pour le chercher
plus tĂŽt. De nombreux types de
Ressources
peut ĂȘtre prĂ©chargĂ©, mais vous devez d'abord vous concentrer sur le prĂ©chargement critique
des ressources, telles que des polices, des images ou des vidéos au-dessus de la ligne de flottaison,
et CSS ou JavaScript du chemin critique.
<relier rel="précharge" as="scénario" href="script.js">
<relier rel="précharge" as="style" href="style.css">
<relier rel="précharge" as="image" href="img.png">
<relier rel="précharge" as="vidéo" href="vid.webm" taper="video/webm">
<relier rel="précharge" href="font.woff2" as="font" taper="font/woff2" crossorigin>
Depuis Chrome 73, le prĂ©chargement peut ĂȘtre utilisĂ© avec des images rĂ©actives pour combiner les deux
motifs pour un chargement d'image beaucoup plus rapide.
<relier
rel="précharge"
as="image"
href="wolf.jpg"
imagesrcset="wolf_400px.jpg 400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w"
taille d'image="50vw"
>
Compresser les fichiers texte
Algorithmes de compression, comme
Gzip et
Brotli, pouvez
réduire considérablement la taille des fichiers texte (HTML, CSS, JavaScript) lors de leur transfert entre
le serveur et le navigateur. Gzip est effectivement pris en charge dans tous les navigateurs et Brotli, qui fournit
des rĂ©sultats de compression encore meilleurs, peut ĂȘtre utilisĂ© dans presque tous les plus rĂ©cents
navigateurs.
La compression de vos ressources minimisera leur taille de livraison, améliorera les temps de chargement et par conséquent
LCP.
- Tout d'abord, vérifiez si votre serveur compresse déjà les fichiers automatiquement. La plupart des hébergements
plates-formes, CDN et serveurs proxy inverses codent les actifs avec compression par défaut ou
vous permettent de les configurer facilement. - Si vous devez modifier votre serveur pour compresser des fichiers, envisagez d'utiliser Brotli au lieu de gzip
car il peut fournir de meilleurs taux de compression. - Une fois que vous avez choisi un algorithme de compression Ă utiliser, compressez les actifs Ă l'avance pendant la construction
processus au lieu d'ĂȘtre Ă la volĂ©e comme ils sont demandĂ©s par le navigateur. Cela minimise le serveur
surcharge et évite les retards lorsque les demandes sont effectuées, en particulier lors de l'utilisation de taux de compression élevés.

Service adaptatif
Lors du chargement de ressources qui constituent le contenu principal d'une page, il peut ĂȘtre efficace de
rĂ©cupĂ©rer diffĂ©rents actifs en fonction de l'appareil de l'utilisateur ou des conditions du rĂ©seau. Cela peut ĂȘtre fait en utilisant
les Informations sur le réseau, Appareil
Mémoire, et
Matériel
Apis.
Si vous disposez de ressources importantes essentielles pour le rendu initial, vous pouvez utiliser différentes variantes
de la mĂȘme ressource en fonction de la connexion ou de l'appareil de l'utilisateur. Par exemple, vous pouvez afficher un
image au lieu d'une vidéo pour toute vitesse de connexion inférieure à 4G:
si (navigateur.lien && navigateur.lien.effectiveType) {
si (navigateur.lien.effectiveType === '4g') {
} else {
}
}
Une liste de propriétés utiles que vous pouvez utiliser:
navigator.connection.effectiveType
: Type de connexion efficacenavigator.connection.saveData
: Ăconomiseur de donnĂ©es activĂ© / dĂ©sactivĂ©navigator.hardwareConcurrency
: Nombre de cĆurs du processeurnavigator.deviceMemory
: Mémoire de l'appareil
Mettre en cache les actifs Ă l'aide d'un service worker
Les techniciens de service peuvent ĂȘtre utilisĂ©s pour de nombreuses tĂąches utiles, y compris la diffusion de rĂ©ponses HTML plus petites comme
mentionnĂ© plus haut dans cet article. Ils peuvent Ă©galement ĂȘtre utilisĂ©s pour mettre en cache toute ressource statique qui peut ĂȘtre
servi au navigateur au lieu du réseau lors de demandes répétées.
La mise en cache des ressources critiques à l'aide d'un technicien de service peut réduire considérablement leurs temps de chargement,
en particulier pour les utilisateurs qui rechargent la page Web avec une connexion plus faible (ou mĂȘme y accĂšdent hors ligne).
BibliothĂšques comme BoĂźte de travail peut faire le processus de
mettre Ă jour les actifs prĂ©cachĂ©s plus facilement que d'Ă©crire un service worker personnalisĂ© pour gĂ©rer cela vous-mĂȘme.
Rendu cÎté client
De nombreux sites utilisent la logique JavaScript cÎté client pour afficher les pages directement dans le navigateur. Cadres et
bibliothÚques, comme Réagir, Angulaire, et
Vue, ont facilité la création d'applications d'une seule page qui gÚrent
différentes facettes d'une page Web entiÚrement sur le client plutÎt que sur le serveur.
Si vous créez un site qui est principalement rendu sur le client, vous devez vous méfier de l'effet qu'il
peut avoir sur LCP si un gros bundle JavaScript est utilisĂ©. Si les optimisations ne sont pas en place pour empĂȘcher
il, les utilisateurs peuvent ne pas voir ou interagir avec le contenu de la page tant que tout le JavaScript critique n'a pas
terminé le téléchargement et l'exécution.
Lors de la création d'un site rendu cÎté client, tenez compte des optimisations suivantes:
- Minimisez le JavaScript critique
- Utiliser le rendu cÎté serveur
- Utiliser le pré-rendu
Minimisez le JavaScript critique
Si le contenu de votre site ne devient visible, ou avec lequel il est possible d'interagir, qu'aprĂšs un certain temps
JavaScript est téléchargé: il devient encore plus important de réduire la taille de votre bundle car
autant que possible. Cela peut ĂȘtre fait par:
- Réduire le JavaScript
- Report de JavaScript inutilisé
- Minimiser les polyfills inutilisés
Revenez à la section Réduire le temps de blocage JavaScript pour en savoir plus sur
ces optimisations.
Utiliser le rendu cÎté serveur
Minimiser la quantitĂ© de JavaScript doit toujours ĂȘtre la premiĂšre chose sur laquelle se concentrer pour les sites
principalement rendu par le client. Cependant, vous devez également envisager de combiner une expérience de rendu de serveur pour
améliorer autant que possible LCP.
Ce concept fonctionne en utilisant le serveur pour rendre l'application en HTML, oĂč le client
«hydrate»Tout le JavaScript et les données requises
sur le mĂȘme contenu DOM. Cela peut amĂ©liorer LCP en garantissant que le contenu principal de la page est le premier
rendu sur le serveur plutÎt que uniquement sur le client, mais il y a quelques inconvénients:
- Maintenir la mĂȘme application rendue en JavaScript sur le serveur et le client peut
augmenter la complexité. - L'exécution de JavaScript pour rendre un fichier HTML sur le serveur augmentera toujours le serveur
temps de réponse (TTFB) par rapport à la simple diffusion de pages statiques à partir du serveur. - Une page rendue par le serveur peut sembler interagir avec, mais elle ne peut répondre à aucun
entrée de l'utilisateur jusqu'à ce que tout le JavaScript cÎté client soit exécuté. Bref, ça peut faire Temps de
Interactif (TTI) pire.
Utiliser le pré-rendu
Le pré-rendu est une technique distincte qui est moins complexe que le rendu cÎté serveur et aussi
fournit un moyen d'amĂ©liorer LCP dans votre application. Un navigateur sans tĂȘte, qui est un navigateur sans
interface utilisateur, est utilisé pour générer des fichiers HTML statiques de chaque route pendant la construction. Ces fichiers
peuvent ensuite ĂȘtre expĂ©diĂ©s avec les bundles JavaScript nĂ©cessaires Ă l'application.
Avec le pré-rendu, TTI est toujours négativement impacté mais les temps de réponse du serveur ne sont pas aussi affectés que
ils seraient avec une solution de rendu cÎté serveur qui rend chaque page dynamiquement seulement aprÚs
c'est demandé.

Pour une plongĂ©e plus approfondie dans les diffĂ©rentes architectures de rendu serveur, jetez un Ćil Ă Rendu sur le
la toile.
Un certain nombre d'outils sont disponibles pour mesurer et déboguer LCP:
-
Phare 6.0 inclut le support pour
mesurer le LCP dans un laboratoire. -
le Timings section de la
Performance
panneau dans Chrome DevTools comprend un marqueur LCP et vous montre à quel élément est associé
LCP lorsque vous survolez le NĆud associĂ© domaine. -
Rapport d'expérience utilisateur Chrome
fournit des valeurs LCP réelles agrégées au niveau de l'origine
Merci Ă Philip Walton, Katie Hempenius, Kayce Basques et Ilya Grigorik pour leurs critiques.