Retour au blog Performance Web - 8 min

Plugins WordPress et performance : lesquels traiter en premier

Comment repérer les plugins WordPress qui alourdissent chaque page, mesurer leur coût réel, puis les limiter ou les retirer.

Un plugin WordPress coûte cher quand il s’exécute sur la page que le visiteur demande, pas quand il apparaît dans la liste des extensions. Le tri utile oppose les plugins confinés à l’administration à ceux qui ajoutent des requêtes SQL, des fichiers CSS ou JavaScript, ou un appel réseau, sur chaque URL publique.

Ce qui se charge vraiment sur la page

Sur une page publique, WordPress charge le cœur, le thème, puis chaque plugin actif. Un plugin peut rester invisible à l’écran et quand même :

  • interroger la base à chaque hit (init, wp_head, the_content) ;
  • enregistrer un script ou une feuille sur tout le site alors que le bloc n’est présent que sur une page ;
  • appeler une API externe avant d’envoyer le HTML ;
  • gonfler les options chargées automatiquement depuis wp_options.

Depuis WordPress 6.6, la colonne autoload vaut notamment on, off, auto, auto-on et auto-off. Une requête qui ne regarde que l’ancienne valeur yes rate une partie du volume. Ce volume est lu à chaque requête, avant même le contenu de la page.

Les plugins qui ne s’accrochent qu’aux écrans wp-admin (sauf s’ils appellent admin-ajax.php depuis le front) ne sont pas la première piste.

Mesurer avant de désactiver

  1. Travaillez sur une copie, avec le même thème et les mêmes extensions.
  2. Installez Query Monitor le temps du diagnostic. Notez, sur l’accueil et sur un modèle interne (article, fiche produit), le nombre de requêtes et le temps PHP.
  3. Refaites la mesure une fois le cache de page vidé, puis une fois le cache chaud. La première chiffre le coût PHP. La seconde montre ce qui fuit encore : fichiers statiques, scripts tiers, pages exclues du cache.
  4. Dans l’onglet des requêtes, repérez les composants (plugin ou thème) qui reviennent sur les deux modèles.
  5. Dans les outils de développement du navigateur, onglet Réseau, listez les scripts dont l’URL contient wp-content/plugins/.

Ne comparez pas deux tests dont l’un est en cache et l’autre non. Vous concluriez qu’un plugin « ne change rien » alors que le HTML venait du cache.

L’ordre de traitement

PrioritéSituationAction
1Appel externe ou dizaines de requêtes sur chaque pageRetirer, ou limiter au modèle qui en a besoin
2CSS et JS du plugin sur toutes les URLDésinscrire hors des pages utiles
3Grosse masse d’options en autoloadNettoyer les transients expirés, remplacer le plugin
4Doublon (deux SEO, deux caches, deux statistiques)N’en garder qu’un
5Outil présent seulement dans l’adminLe laisser, sauf s’il ralentit les rédacteurs

Query Monitor, un profiler ou une extension de migration n’ont rien à faire sur la production une fois le constat noté : retirez-les.

Corrections qui tiennent

  • Constructeurs de page et sliders : ils envoient souvent leurs fichiers partout. Réglez l’option « charger seulement si le widget est présent », ou remplacez le slider de l’accueil par une image.
  • Sauvegardes : une archive déclenchée pendant la visite bloque PHP. Planifiez-la en cron CLI, hors de la requête visiteur. La copie elle-même relève de la règle 3-2-1.
  • Partages sociaux, cartes et chats : ce sont des scripts tiers. Le tri se fait dans scripts tiers et performance, pas en ajoutant un plugin de cache supplémentaire.
  • Cache : un seul plugin de cache de page. Deux couches qui réécrivent les mêmes URL se contredisent.
  • Base : un plugin « articles similaires » qui fait un LIKE sur le contenu à chaque vue ne se corrige pas avec un thème plus léger. Voyez la base WordPress.

Après chaque retrait, remesurez la même URL, cache vidé puis cache chaud. Si le temps PHP ne bouge pas, le coût est ailleurs : hébergement, thème, ou ressource externe.

Les Core Web Vitals, eux, se lisent sur le terrain (utilisateurs réels) et en laboratoire. Un plugin peut dégrader le LCP sans que le nombre de requêtes SQL paraisse énorme, dès qu’il retarde l’image principale. Le cadre de lecture est dans Core Web Vitals et monitoring.

Erreurs qui font perdre la journée

  • Désactiver vingt plugins d’un coup : vous ne savez plus lequel comptait, et le formulaire de contact est mort.
  • Juger sur le seul score Lighthouse mobile, sans regarder la cascade réseau.
  • Ajouter un plugin « d’optimisation » qui concatène des fichiers déjà bien mis en cache, et qui casse admin-ajax.php.
  • Laisser un cache d’objet (Redis) masquer, en apparence, un plugin qui contacte un serveur externe : l’objet en cache n’évite pas cet aller-retour.

Le bon réflexe est une liste courte : plugins actifs sur le front, coût mesuré sur deux modèles, un changement à la fois, puis retrait des outils de diagnostic.

Questions fréquentes

Le nombre de plugins suffit-il à dire qu’un site WordPress est lent ?

Non. Dix plugins qui ne s’exécutent que dans l’administration pèsent moins qu’un seul plugin qui ajoute des requêtes et des scripts sur chaque page publique.

Faut-il désactiver les plugins un par un en production ?

Non. Faites-le sur une copie du site. En production, un plugin de paiement ou de cache coupé sans précaution casse la commande ou vide le rendu.

Un cache de page rend-il les plugins inoffensifs ?

Le cache évite de réexécuter PHP pour les visiteurs anonymes. Il ne corrige pas un script tiers, une option autoload énorme, ni une page exclue du cache comme le panier.

Surveiller mes URL