Le piège avec WordPress, c’est qu’on peut “optimiser” un site pendant des heures sans jamais le stabiliser. Tu actives deux plugins réputés, tu coches trois options, ton score PageSpeed monte de 8 points… puis le lendemain le menu se casse, un script de paiement ne charge plus, et tu recommences en sens inverse. C’est ça la loop : une suite d’ajustements qui se compensent, sans stratégie claire.
Le combo WP Rocket + Perfmatters est typiquement dans cette zone grise. Les deux sont bons. Mais ensemble, si tu les laisses tous les deux piloter le JS et le CSS, tu obtiens souvent un Frankenstein : des optimisations en double, des effets de bord, et une impression frustrante de “score bloqué”. La sortie n’est pas de changer d’outil. La sortie, c’est de remettre une méthode simple et reproductible.
Pourquoi tu tombes dans la loop (même en étant soigneux)
WP Rocket a un ADN très clair : le cache HTML et les optimisations “générales” (minification, délai JS, lazyload, préchargements, etc.). Perfmatters, lui, est souvent utilisé comme couteau suisse front : Script Manager, gestion des bloat, ajustements sur le rendu, et selon les setups des options qui se superposent à ce que fait déjà WP Rocket.
Le problème n’est pas “ça ne marche pas”. Le problème, c’est que tu peux obtenir des résultats contradictoires selon la page, selon l’ordre de chargement, selon le device, et selon le cache chaud/froid. Et quand tu mesures uniquement “un test PageSpeed à la main”, tu peux te raconter n’importe quelle histoire.
Sponsorisé par Le Scribouillard
Besoin de contenu optimisé SEO ?
Utilisez la meilleure plateforme française de création de contenu assistée par IA ! Et générez des articles pour moins de 1€ !
Étape 1 : faire une baseline propre (sinon tu optimises du bruit)
Avant de discuter réglages, il faut isoler le sujet. Une baseline propre, c’est un moment où tu sais exactement ce que tu testes. Oui, c’est un peu ingrat. Non, ce n’est pas “perdre du temps”. C’est le seul moyen d’éviter de tweaker des symptômes.
Concrètement, je veux un test où le site tourne sur un thème minimal ou au moins un environnement de staging, avec les plugins non essentiels coupés. L’objectif n’est pas de vivre comme ça. L’objectif est de répondre à une question bête : est-ce que le plafond de perfs vient du serveur + WordPress (TTFB, cache HTML, requêtes lentes), ou du front (JS/CSS trop lourd, images, fonts, third-party) ?
Au passage, profite de cette phase pour vérifier un truc qui calme beaucoup de débats : est-ce que tes pages publiques sortent vraiment du cache. Si ton HTML est recalculé trop souvent, tu peux optimiser le JS jusqu’à demain, ton LCP mobile restera moyen. Et c’est précisément là que WP Rocket doit briller.
Étape 2 : attribuer les rôles (sinon tu doubles tout)
Ma règle terrain est simple : un outil pilote le cache HTML, et un outil pilote les optimisations front. Quand tu laisses deux plugins faire la même chose, tu ne “cumules” pas. Tu empiles des transformations, tu multiplies les cas limites, et tu compliques ton debug.
Dans 80% des cas, je laisse WP Rocket piloter le cache. Il est fait pour ça, il gère bien les variantes (mobile, logged-in, etc.), et c’est là que tu gagnes les millisecondes “gratuites” qui changent vraiment le ressenti. Perfmatters, je l’utilise plutôt pour ce qu’il fait très bien : désactiver ce qui ne sert à rien (par page si nécessaire) et reprendre le contrôle sur des scripts envahissants.
Ce n’est pas une vérité religieuse, c’est une séparation des responsabilités. Tu peux décider l’inverse si tu as une raison. Mais décide. Ne laisse pas les deux “essayer”.
Les réglages en double emploi qui créent le plus d’effets de bord
Le scénario classique, c’est “j’active une option pour gagner 2 points, puis je passe une heure à exclure des scripts”. Ça arrive surtout sur trois familles : minify/combiner, defer/delay, et CSS critique / unused CSS.
Sur la minification et la combinaison, mon avis est assez sec : en 2026, combiner des fichiers n’est presque jamais le levier magique que les gens imaginent, surtout en HTTP/2 ou HTTP/3. Et c’est une source infinie de bugs quand un plugin A minifie puis un plugin B re-minifie, ou quand l’ordre de scripts est modifié. Si tu gardes la minification, garde-la dans un seul endroit. Et si tu as des régressions bizarres (sliders, menus, scripts de tracking), commence par couper la combinaison avant de partir dans des exclusions au hasard.
Sur defer/delay, c’est encore plus piégeux. “Defer” a un impact réel sur le rendu, “delay” peut être très agressif, et deux outils qui touchent à la stratégie de chargement du JS peuvent facilement créer des conditions de course. Un exemple typique : tu delays un script qui initialise un composant, mais tu defers un autre script qui l’utilise, et selon le timing tu obtiens un site “ok” en local et cassé sur certains mobiles. Là encore, choisis un pilote unique pour la stratégie JS. Si tu veux Perfmatters pour le Script Manager, laisse-le faire la chirurgie (désactiver par page), et laisse WP Rocket faire le gros réglage global, ou l’inverse. Mais pas les deux.
Enfin, le gros morceau : “Remove Unused CSS”, “Critical CSS”, “Optimize CSS delivery”… peu importe le nom, l’idée est la même. C’est puissant, mais c’est aussi une machine à faux positifs. Si deux outils tentent de générer du CSS critique, ou si l’un retire du CSS pendant que l’autre modifie l’ordre de chargement, tu peux te retrouver avec un site qui passe Lighthouse mais qui a des styles manquants sur une page produit, ou sur un état hover, ou sur un composant chargé dynamiquement. Si tu actives ce type d’optimisation, fais-le avec un seul outil, et garde en tête que le coût réel n’est pas le CPU, c’est le coût de maintenance.
Une stratégie stable que je recommande (et qui évite 90% des loops)
Si tu veux un setup qui tient dans la durée, je te conseille de viser “stable” avant “max score”. WP Rocket en pilote du cache HTML, Perfmatters en pilote de la désactivation ciblée. Ensuite, tu choisis une seule brique pour le CSS critique/unused CSS, et une seule brique pour la stratégie JS (defer/delay).
À partir de là, tu peux travailler proprement : tu coupes ce qui est redondant, tu réduis les exclusions, et surtout tu arrêtes de bouger dix paramètres à la fois. Tu changes une variable, tu mesures, tu gardes ou tu reviens en arrière. C’est moins “fun” que de tout cocher, mais c’est comme ça que tu obtiens un site performant qui ne te pète pas à la figure au prochain update de plugin.
Un point qui aide beaucoup : si ton objectif est Core Web Vitals, ne te laisse pas hypnotiser par “Render-blocking resources” comme un totem. Oui, c’est un signal utile. Non, ce n’est pas le KPI final. Un site peut avoir une alerte render-blocking et quand même avoir un LCP correct, parce que le contenu above-the-fold est bien géré. À l’inverse, tu peux “nettoyer” l’onglet Opportunities et garder un LCP mauvais à cause d’un hero image trop lourd ou d’un TTFB trop haut.
Mesurer sans se raconter d’histoires (reproductible, ou rien)
Le test “je lance PageSpeed Insights et je regarde le chiffre” est le meilleur moyen de tourner en rond. Ce n’est pas que l’outil est mauvais. C’est que tu n’as pas de protocole. Entre cache froid/chaud, variabilité réseau, scripts tiers, et pages pas représentatives, tu peux valider une régression sans t’en rendre compte.
Ce que je veux, c’est une mesure répétable sur une URL fixe, avec plusieurs runs, et idéalement la possibilité de comparer avant/après. Lighthouse en CLI fait très bien le job pour ça. Tu lances plusieurs fois, tu gardes les rapports, tu compares des tendances. Et si tu peux, tu ajoutes une couche RUM (même basique) pour vérifier que tes vrais utilisateurs ne sont pas en train de souffrir pendant que Lighthouse t’applaudit.
# Exemple simple et reproductible (à adapter)
# Lance plusieurs runs, compare les rapports, et teste cache chaud vs froid.
npx lighthouse https://ton-site.tld/ --preset=desktop --output html --output-path ./lh-desktop.html
npx lighthouse https://ton-site.tld/ --preset=mobile --output html --output-path ./lh-mobile.htmlDernier détail qui change tout : teste au moins une page “simple” (homepage) et une page “réelle” (article long, page produit, page avec formulaire). Les loops arrivent souvent parce qu’on optimise la homepage, puis on découvre que les templates secondaires ont des scripts différents, des CSS différents, et des comportements plus fragiles.
Le vrai gain, c’est de sortir du mode « tweak permanent »
J’ai vu des sites WordPress rester “bloqués” à 60 sur PageSpeed avec deux plugins perf, non pas parce qu’il manque un réglage magique, mais parce que le site traîne un thème lourd, des builders, trois trackers, des embeds, des fonts inutiles, et un cache HTML mal maîtrisé. À ce moment-là, ajouter une couche d’optimisation front n’est pas un plan. C’est juste un pari.
Quand tu mets une baseline, que tu assignes les responsabilités, que tu évites les doubles emplois, et que tu mesures proprement, tu reprends le contrôle. Le score finit souvent par monter, oui. Mais surtout, tu obtiens un site qui ne dépend pas d’un empilement fragile de “features perf”. Et ça, franchement, c’est le seul objectif qui vaut le coup.