Ton site est déjà rapide grâce à WP Rocket, mais tu veux décrocher le 90+ sur PageSpeed Insights ? Ce guide technique t'emmène au-delà du cache : préchargement de l'image LCP, suppression du CSS inutilisé, optimisation JavaScript, stabilité visuelle. Toutes les techniques avancées pour des Core Web Vitals au vert.
Aller plus loin que le cache : l'excellence des Core Web Vitals
Tu as installé WP Rocket, configuré le cache, activé la minification et le lazy loading. Ton site est déjà nettement plus rapide qu'avant. Mais ton score PageSpeed plafonne à 75 ou 80, et certains Core Web Vitals restent en orange.
C'est normal. Le cache et les réglages de base couvrent 80 % du chemin. Les 20 % restants demandent des optimisations plus ciblées — celles qui font passer un site de "correct" à "excellent".
Les Core Web Vitals (LCP, CLS, INP) sont des facteurs directs de classement Google. Les atteindre, c'est gagner des positions SEO, mais aussi offrir une expérience utilisateur réellement fluide. Un site où le contenu apparaît vite, où rien ne bouge pendant le chargement et où chaque clic répond instantanément — c'est un site sur lequel on reste et on revient.
Même avec un plugin comme WP Rocket, il y a des détails techniques qui peuvent faire toute la différence pour atteindre le 90+ sur PageSpeed Insights. Ce guide va t'accompagner à travers ces subtilités, avec des solutions concrètes et des exemples applicables.
Optimiser le LCP (Largest Contentful Paint) : la vitesse perçue

Le LCP mesure le temps nécessaire pour afficher le plus grand élément visible à l'écran — généralement une image hero, une vidéo ou un bloc de texte principal. Google considère qu'un bon LCP se situe sous les 2,5 secondes. C'est la métrique qui reflète la vitesse perçue par ton visiteur : "quand est-ce que je vois enfin le contenu ?"
Les causes fréquentes d'un mauvais LCP
Une image LCP non optimisée. C'est la cause numéro un. L'image principale de ta page (souvent le hero banner) est trop lourde, mal dimensionnée ou dans un format peu efficace. Une image hero de 1,5 Mo en PNG qui pourrait peser 150 Ko en WebP, c'est 1,3 Mo de gaspillage pur sur l'élément le plus critique de ta page.
Des fichiers CSS et JavaScript qui bloquent le rendu. Avant d'afficher quoi que ce soit, le navigateur doit télécharger et traiter les fichiers CSS et JS "render-blocking". Si tu as 8 fichiers CSS et 12 fichiers JS qui se chargent avant le moindre pixel à l'écran, le LCP en pâtit directement.
Un TTFB trop élevé. Si ton serveur met 800 ms à répondre, ton LCP ne pourra jamais descendre sous les 2,5 secondes. Le TTFB est le point de départ de toute la chaîne de chargement.
Des polices web non optimisées. Si ta police Google Fonts ou ta police custom se charge tardivement, le texte principal reste invisible ou s'affiche avec une police de substitution avant de "sauter" vers la bonne police. Si le LCP de ta page est un bloc de texte, la police retarde directement le LCP.
Solutions avancées pour le LCP
Précharger l'image LCP. C'est l'optimisation la plus impactante. Le préchargement indique au navigateur de télécharger l'image hero en priorité absolue, avant même de lire le CSS ou le JavaScript.
WP Rocket détecte et précharge automatiquement les images au-dessus de la ligne de flottaison. Mais dans certains cas (images en arrière-plan CSS, sliders dynamiques), tu devras peut-être ajouter manuellement un hint de préchargement. La méthode consiste à ajouter dans le <head> de ta page :
<link rel="preload" as="image" href="/images/hero-banner.webp" type="image/webp">
Tu peux l'ajouter via le hook wp_head dans ton fichier functions.php ou via un plugin de snippets. L'important est de ne précharger qu'une seule image par page (celle du LCP), sinon tu dilues l'effet.
Utiliser le Remove Unused CSS de WP Rocket. Cette fonctionnalité analyse chaque page et ne charge que le CSS réellement utilisé. Sur une page type, elle peut réduire le poids du CSS de 60 à 80 %. Moins de CSS à charger avant l'affichage = LCP plus rapide.
Si tu constates un problème visuel après activation, utilise la safelist de WP Rocket pour conserver certaines règles CSS spécifiques. La safelist accepte des sélecteurs individuels ou des patterns.
Prioriser le critical CSS. Le critical CSS (ou CSS critique) est le CSS nécessaire pour afficher uniquement ce qui est visible à l'écran avant le scroll. WP Rocket génère automatiquement ce CSS critique pour chaque page. Le reste du CSS est chargé de manière asynchrone, sans bloquer le rendu.
Si le CSS critique généré automatiquement ne couvre pas correctement l'affichage au-dessus de la ligne de flottaison, tu peux le personnaliser via l'onglet "Optimisation des fichiers" de WP Rocket en ajoutant des règles à la safelist.
Réduire le TTFB. Si ton TTFB est le goulet d'étranglement, les solutions sont côté infrastructure : passer à un hébergement plus performant (VPS, hébergement WordPress managé), activer un cache serveur (Redis, Varnish) en complément du cache de page WP Rocket, et mettre en place un CDN pour les visiteurs éloignés géographiquement.
Optimiser les polices. Héberge tes polices localement plutôt que de les charger depuis Google Fonts. Tu élimines une requête DNS + une requête HTTP vers un serveur externe. Utilise font-display: swap dans ta déclaration CSS pour que le navigateur affiche immédiatement le texte avec une police système en attendant la police personnalisée :
@font-face {
font-family: 'MaPolice';
src: url('/fonts/mapolice.woff2') format('woff2');
font-display: swap;
}
Précharge le fichier de police principal pour accélérer encore le processus :
<link rel="preload" as="font" href="/fonts/mapolice.woff2" type="font/woff2" crossorigin>
Réduire le CLS (Cumulative Layout Shift) : la stabilité visuelle

Le CLS quantifie les décalages inattendus de mise en page pendant le chargement. Tu cliques sur un bouton, et au dernier moment une image se charge au-dessus et pousse tout vers le bas — tu cliques au mauvais endroit. Un bon CLS est inférieur à 0,1.
Les causes fréquentes d'un mauvais CLS
Des images et vidéos sans dimensions explicites. Quand le navigateur rencontre une image sans attributs width et height, il ne connaît pas l'espace à réserver. L'image se charge, et tout le contenu en dessous se décale d'un coup.
Des publicités ou iframes injectées dynamiquement. Les bannières publicitaires, les widgets tiers (chat, réseaux sociaux) et les iframes qui s'insèrent après le chargement initial créent des décalages importants.
Des polices qui provoquent un FOUT (Flash of Unstyled Text). Le texte s'affiche d'abord avec une police système, puis "saute" visuellement quand la police personnalisée se charge. Si la police custom a des dimensions différentes de la police de substitution, tout le layout se décale.
Du contenu inséré dynamiquement au-dessus du fold. Un bandeau cookie qui pousse le contenu, une barre de notification qui s'injecte en haut de page, un message promotionnel qui apparaît après 2 secondes — tout ça crée du CLS.
Solutions avancées pour le CLS
Spécifier les dimensions de chaque image et vidéo. C'est la correction la plus simple et la plus efficace. Assure-toi que chaque balise <img> a des attributs width et height :
<img src="photo.webp" width="800" height="450" alt="Description">
Cela permet au navigateur de réserver l'espace exact avant même de télécharger l'image. WP Rocket peut ajouter automatiquement les dimensions manquantes via son option "Add missing image dimensions" dans l'onglet Médias.
Pour les vidéos et les iframes, utilise la technique du ratio container en CSS :
.video-container {
position: relative;
width: 100%;
padding-bottom: 56.25%; /* ratio 16:9 */
height: 0;
overflow: hidden;
}
.video-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
Réserver l'espace pour les publicités et widgets tiers. Si tu affiches des bannières publicitaires, définis une hauteur minimale fixe pour le conteneur, même avant que la publicité ne se charge :
.ad-banner {
min-height: 250px; /* hauteur standard d'un format Medium Rectangle */
width: 100%;
}
Précharger les polices et utiliser font-display: swap. On l'a vu pour le LCP, mais c'est aussi crucial pour le CLS. Le font-display: swap affiche immédiatement le texte avec une police système, puis bascule vers la police custom quand elle est disponible. Le décalage visuel est minimisé si les deux polices ont des métriques similaires.
Pour réduire encore le FOUT, choisis une police de substitution aux dimensions proches de ta police personnalisée. L'outil Fallback Font Generator de Monica Dinculescu te permet d'ajuster les métriques d'une police système pour matcher au mieux ta police custom.
Éviter d'injecter du contenu au-dessus du fold. Les bandeaux cookies, les barres de notification et les messages promotionnels doivent idéalement apparaître en overlay (position fixed ou sticky) plutôt qu'en poussant le contenu existant. Si tu utilises un plugin de consentement cookies, vérifie qu'il utilise un overlay et non une insertion dans le flux du document.
Améliorer l'INP (Interaction to Next Paint) : la réactivité
L'INP mesure la réactivité de ta page aux interactions utilisateur (clics, taps, saisie clavier). C'est le Core Web Vital le plus récent — il a remplacé le FID en mars 2024 — et souvent le plus difficile à optimiser. Un bon INP est inférieur à 200 ms.
Les causes fréquentes d'un mauvais INP
De longues tâches JavaScript (Long Tasks). Le navigateur utilise un seul thread principal pour exécuter le JavaScript ET pour répondre aux interactions utilisateur. Si un script met 300 ms à s'exécuter, le navigateur ne peut pas répondre à un clic pendant ces 300 ms. L'utilisateur attend, le bouton ne réagit pas, la frustration monte.
Des bibliothèques JavaScript lourdes. Google Analytics, Google Tag Manager, Facebook Pixel, les widgets de chat en direct, les scripts de tracking, les solutions de A/B testing — chacun de ces scripts ajoute du poids au thread principal. Individuellement, chacun semble léger. Cumulés, ils créent un goulet d'étranglement.
La surcharge du thread principal. Au-delà des scripts individuels, c'est la charge globale du thread principal qui dégrade l'INP. Animations CSS complexes, recalculs de layout fréquents, gestionnaires d'événements mal optimisés — tout cela s'additionne.
Solutions avancées pour l'INP
Retarder l'exécution du JavaScript avec WP Rocket. La fonctionnalité "Delay JavaScript execution" de WP Rocket est l'arme la plus efficace contre un mauvais INP. Elle retarde l'exécution de tous les scripts JavaScript jusqu'à la première interaction utilisateur (scroll, clic, touche clavier).
Concrètement : quand le visiteur arrive sur la page, seul le HTML et le CSS critique sont chargés. Les scripts JS ne s'exécutent qu'au moment où l'utilisateur interagit. Le thread principal est libre pour répondre instantanément.
Certains scripts ne supportent pas bien ce retard — typiquement les sliders qui doivent s'animer au chargement, les scripts d'analytics qui doivent tracker le temps passé, ou les chatbots qui doivent s'afficher immédiatement. WP Rocket te permet d'exclure ces scripts spécifiques de la liste du delay.
Identifier les Long Tasks avec Chrome DevTools. Ouvre Chrome DevTools (F12), va dans l'onglet Performance, enregistre un profil de chargement, puis interagis avec ta page. Les tâches de plus de 50 ms apparaissent en rouge. Tu peux ainsi identifier précisément quel script bloque le thread principal et pendant combien de temps.
C'est le diagnostic le plus précis que tu puisses faire pour l'INP. Chaque Long Task identifiée est une piste d'optimisation.
Éliminer le JavaScript inutile. Audite les scripts chargés sur chaque page. Un plugin de partage social charge ses scripts sur ta page "Mentions légales" ? Un plugin de formulaire injecte son JS sur des pages sans formulaire ? Utilise un plugin comme Asset CleanUp ou Perfmatters pour désactiver les scripts page par page.
WP Rocket contribue aussi via le Remove Unused CSS et le Delay JavaScript, mais le nettoyage chirurgical des scripts inutiles page par page est un levier supplémentaire significatif.
Découper les longues tâches JavaScript. Si tu développes du JavaScript custom pour ton site, découpe les traitements lourds en petites tâches qui "rendent la main" au navigateur entre chaque étape. La technique consiste à utiliser requestAnimationFrame ou setTimeout(fn, 0) pour fractionner le travail :
// Au lieu de bloquer le thread pendant 500ms :
function traitementLourd() {
// ... 500ms de calcul d'un coup
}
// Découpe en petits morceaux :
function traitementParMorceaux(items, index = 0) {
const batch = 50;
const end = Math.min(index + batch, items.length);
for (let i = index; i < end; i++) {
// traitement d'un item
}
if (end < items.length) {
setTimeout(() => traitementParMorceaux(items, end), 0);
}
}
Utiliser des Web Workers pour les tâches lourdes. Si ton site effectue des calculs intensifs côté client (filtrage de produits, traitement de données, recherche en temps réel), déplace ces traitements dans un Web Worker. Un Web Worker s'exécute dans un thread séparé du thread principal — il ne bloque jamais les interactions utilisateur.
// Dans ton script principal :
const worker = new Worker('/js/mon-worker.js');
worker.postMessage({ data: messDonnees });
worker.onmessage = (e) => {
// afficher les résultats sans avoir bloqué le thread principal
afficherResultats(e.data);
};
C'est une solution avancée, mais sur les sites avec des fonctionnalités interactives complexes, l'impact sur l'INP est spectaculaire.
Optimisation avancée de CSS et JavaScript

Au-delà des Core Web Vitals individuels, la gestion globale de tes ressources CSS et JavaScript est un levier transversal qui impacte les trois métriques.
Minification et combinaison : le pour et le contre
La minification (suppression des espaces, commentaires, caractères inutiles) est toujours bénéfique. Active-la systématiquement dans WP Rocket pour le CSS et le JavaScript. Il n'y a quasiment aucun inconvénient.
La combinaison (fusion de plusieurs fichiers en un seul) est plus nuancée. Avec HTTP/1.1, combiner les fichiers réduisait le nombre de connexions simultanées et accélérait le chargement. Avec HTTP/2 (standard sur la quasi-totalité des hébergeurs modernes), le navigateur peut télécharger des dizaines de fichiers en parallèle sur une seule connexion. La combinaison n'est plus nécessaire, et peut même être contre-productive : un seul fichier combiné volumineux invalide la totalité du cache navigateur dès qu'un composant change.
Ma recommandation : vérifie que ton hébergeur supporte HTTP/2 (c'est presque certain). Si oui, active la minification mais pas la combinaison dans WP Rocket.
Supprimer le CSS inutilisé
C'est l'une des optimisations les plus impactantes pour le LCP et le poids global de la page. Sur un site WordPress typique avec un thème comme Divi ou Elementor, plus de 60 % du CSS chargé n'est pas utilisé sur la page en cours.
Avec WP Rocket, active "Remove Unused CSS" dans l'onglet Optimisation des fichiers. Le plugin analyse chaque page individuellement et génère un fichier CSS ne contenant que les règles effectivement utilisées.
Avec Chrome DevTools, tu peux visualiser le CSS inutilisé. Ouvre DevTools (F12), va dans l'onglet "Coverage" (accessible via Ctrl+Shift+P > "Coverage"), recharge la page. Tu verras le pourcentage de CSS utilisé vs inutilisé pour chaque fichier, avec un repère visuel rouge (inutilisé) et vert (utilisé).
Si tu identifies un fichier CSS entier qui est inutilisé sur certaines pages (CSS d'un slider chargé sur toutes les pages alors qu'il n'est que sur la homepage, par exemple), désactive-le page par page avec Asset CleanUp ou Perfmatters.
Délai d'exécution JavaScript
WP Rocket propose deux niveaux d'optimisation JavaScript :
Load JavaScript Deferred (defer). Le navigateur télécharge le fichier JS en parallèle mais n'exécute le script qu'après le parsing complet du HTML. Le rendu n'est pas bloqué. C'est le minimum à activer.
Delay JavaScript Execution. Plus agressif : les scripts ne sont ni téléchargés ni exécutés tant que l'utilisateur n'interagit pas avec la page. C'est le levier le plus puissant pour l'INP et le LCP, mais il demande de gérer les exclusions pour les scripts qui doivent s'exécuter immédiatement.
Scripts à exclure typiquement du delay : les scripts qui gèrent le consentement cookies (RGPD), les scripts d'animation au chargement (sliders, compteurs), et certains scripts d'analytics si tu as besoin du tracking du temps passé sur la page.
Chargement asynchrone : async vs defer
Deux attributs HTML permettent de contrôler le chargement des scripts :
async : le script est téléchargé en parallèle du parsing HTML et exécuté dès qu'il est prêt — sans attendre que le HTML soit entièrement analysé. L'ordre d'exécution entre scripts n'est pas garanti.
defer : le script est téléchargé en parallèle mais exécuté seulement après le parsing complet du HTML, et dans l'ordre d'apparition dans le code. C'est le comportement le plus prévisible et le plus sûr.
En pratique, defer est le bon choix dans 90 % des cas. async est adapté aux scripts totalement indépendants (analytics, pixels de tracking) qui n'ont pas besoin d'interagir avec le DOM ni avec d'autres scripts.
WP Rocket applique defer par défaut quand tu actives le chargement différé du JavaScript, ce qui est le choix le plus sûr.
Bonnes pratiques générales pour l'optimisation avancée
Surveiller les performances régulièrement
L'optimisation n'est pas un événement ponctuel, c'est un processus continu. Chaque mise à jour de thème, chaque nouveau plugin, chaque ajout de contenu peut impacter les performances.
Programme un test PageSpeed mensuel sur tes pages clés (accueil, page de service principale, article le plus visité). Configure un monitoring automatique via GTmetrix pour être alerté si les performances se dégradent.
Utiliser un CDN performant
Un CDN (Content Delivery Network) distribue tes fichiers statiques depuis des serveurs répartis dans le monde. Le visiteur reçoit les images, CSS et JavaScript depuis le serveur le plus proche géographiquement.
L'impact sur le LCP est direct pour les visiteurs éloignés de ton serveur principal. Si ton audience est internationale ou répartie sur tout le territoire français, un CDN comme Cloudflare (offre gratuite disponible), BunnyCDN ou le RocketCDN intégré à WP Rocket est un complément pertinent.
WP Rocket s'intègre nativement avec la plupart des CDN en réécrivant automatiquement les URLs de tes ressources statiques.
Optimiser les polices
Les polices web sont un facteur souvent sous-estimé qui impacte à la fois le LCP et le CLS.
Héberge tes polices localement. Au lieu de charger depuis fonts.googleapis.com (requête DNS + téléchargement depuis un serveur tiers), télécharge les fichiers .woff2 et héberge-les sur ton propre serveur. Tu élimines une dépendance externe et tu profites de ton propre cache.
Limite le nombre de variantes. Chaque poids (Regular, Bold, Light) et chaque style (Normal, Italic) est un fichier séparé à télécharger. Si tu charges 6 variantes de ta police mais que tu n'en utilises que 2, c'est du gaspillage. Ne charge que les variantes réellement utilisées dans ton design.
Utilise le format WOFF2. C'est le format le plus compressé et le plus largement supporté. Inutile de charger des fallbacks en WOFF ou TTF en 2026.
Nettoyage régulier de la base de données
Un point souvent oublié dans les optimisations avancées. Une base de données encombrée ralentit les requêtes côté serveur, ce qui impacte le TTFB.
WP Rocket intègre un outil de nettoyage avec planification automatique. Programme un nettoyage hebdomadaire des révisions, brouillons automatiques, commentaires en corbeille, transients expirés et tables orphelines. C'est un réglage qu'on configure une fois et qu'on oublie — mais dont l'impact à long terme est réel.
Atteindre l'excellence de la vitesse WordPress
Optimiser les Core Web Vitals au niveau avancé demande du temps, de la méthode et des tests. Mais les résultats en valent la peine : un score PageSpeed de 90+ sur mobile, des Core Web Vitals au vert, une expérience utilisateur irréprochable et un avantage SEO concret sur tes concurrents.
Récapitulons les leviers clés :
Pour le LCP : précharger l'image hero, supprimer le CSS inutilisé, optimiser les polices, réduire le TTFB.
Pour le CLS : spécifier les dimensions des images et vidéos, réserver l'espace des éléments dynamiques, gérer le chargement des polices.
Pour l'INP : retarder l'exécution du JavaScript non critique, éliminer les Long Tasks, supprimer les scripts inutiles page par page.
WP Rocket simplifie déjà une grande partie de ces optimisations : Remove Unused CSS, Delay JavaScript, lazy loading, préchargement du cache et des liens, nettoyage de base de données. C'est la fondation sur laquelle toutes les optimisations avancées s'appuient.
Je l'utilise depuis plusieurs années et c'est un vrai game changer, y compris pour les optimisations avancées. Un exemple concret : sur le site d'un cabinet d'architecte, la combinaison de WP Rocket (Remove Unused CSS + Delay JS) et d'un préchargement manuel de l'image LCP a fait passer le score PageSpeed mobile de 44 à 97 — et le LCP de 4,1 secondes à 1,4 seconde. Sur un site e-commerce sous WooCommerce, les mêmes techniques ont ramené l'INP de 380 ms à 120 ms, rendant la navigation catalogue enfin fluide sur mobile.
Mais la performance web est un travail continu. Les standards évoluent, Google ajuste ses métriques, les navigateurs changent. Ne cesse jamais d'optimiser, de tester et de mesurer.
Pour revoir les fondamentaux ou approfondir d'autres aspects :
- Accélérer un site WordPress : le guide complet avec WP Rocket — la vue d'ensemble de toutes les optimisations.
- Pourquoi mon site WordPress est lent ? Diagnostic et solutions — comprendre les causes de la lenteur.
- WP Rocket : guide complet d'installation et configuration optimale — maîtriser chaque réglage.

