Dépannage WordPress

Site WordPress lent : diagnostic et accélération pas à pas

Site WordPress lent ? Mesure, hébergement, PHP, plugins, images, cache, base de données et réglages Elementor ou WPBakery : la méthode dans l'ordre.

Site WordPress lent : diagnostic et accélération pas à pas

Un site WordPress lent se répare dans un ordre précis : mesurer d’abord (TTFB et LCP), corriger le serveur si le premier octet arrive après 0,8 seconde, puis alléger plugins, images et base de données, et activer un cache. Si ton site est construit avec Elementor ou WPBakery, quelques réglages propres au constructeur s’ajoutent à la liste. Chaque étape ci-dessous se vérifie par une mesure, sans rien casser.

Ce qui pèse vraiment sur la vitesse WordPress

La lenteur WordPress a rarement une seule cause. C’est souvent une accumulation, et chaque cause laisse une trace mesurable :

  • Un hébergement sous-dimensionné ou un PHP dépassé : sur un mutualisé, tu partages les ressources du serveur avec d’autres sites. Quand le voisin prend du trafic, tu ralentis. Symptôme : un TTFB élevé, même sur une page simple.
  • L’absence de cache : WordPress recalcule chaque page à chaque visite, en interrogeant la base de données à chaque requête.
  • Des images trop lourdes : une photo de plusieurs mégaoctets envoyée telle quelle depuis l’appareil, sans redimensionnement ni compression.
  • Des plugins qui chargent partout : un formulaire de contact qui injecte ses scripts sur chaque page du site, même là où il n’y a aucun formulaire.
  • Une base de données encombrée : révisions d’articles, brouillons automatiques, options chargées à chaque page par des extensions désinstallées depuis longtemps.
  • Un thème ou un constructeur de pages lourd : Elementor et WPBakery produisent plus de HTML et de CSS qu’un thème léger. Une partie se règle, voir la section dédiée plus bas.
  • Trop de ressources externes : polices Google, scripts tiers, iframes qui retardent l’affichage.
  • Des directives PHP trop basses : elles ne ralentissent pas le site à proprement parler, mais font échouer les opérations lourdes (import, sauvegarde d’une page complexe, envoi d’un gros fichier).

1. Mesure d’abord, agis ensuite

Ne touche rien avant d’avoir des chiffres de départ. Lance PageSpeed Insights et GTmetrix sur ta page d’accueil et sur une page article ou produit. PageSpeed Insights combine un test de laboratoire (Lighthouse) et des données de terrain issues de vrais visiteurs de Chrome, collectées sur les 28 derniers jours (source : Google for Developers, 2026).

Les Core Web Vitals désignent les trois indicateurs de Google qui mesurent le chargement (LCP), la réactivité (INP) et la stabilité visuelle (CLS) d’une page. Chaque seuil s’évalue au 75e centile des chargements, mobile et ordinateur séparément (source : web.dev, 2026).

Note :

  • Le Time to First Byte (TTFB) désigne le délai entre le début de la navigation vers une page et l’arrivée du premier octet de la réponse (source : web.dev, 2026). Il est jugé bon jusqu’à 0,8 seconde et mauvais au-delà de 1,8 seconde. Un TTFB élevé pointe vers le serveur (hébergement, PHP, base de données), pas vers le design.
  • Le Largest Contentful Paint (LCP) désigne le délai d’affichage du plus grand élément visible de la page, image, bloc de texte ou vidéo (source : web.dev, 2026). Il est bon jusqu’à 2,5 secondes et mauvais au-delà de 4 secondes. Le coupable est souvent une image lourde ou un CSS bloquant.
  • L’INP (Interaction to Next Paint) est bon jusqu’à 200 millisecondes. Il se dégrade quand les scripts monopolisent le navigateur ou que la page contient trop d’éléments HTML (voir la section sur les constructeurs).
  • Le poids total de la page : Lighthouse conseille de rester sous 1 600 Kio et signale toute page qui dépasse 5 000 Kio (source : Chrome for Developers, 2026).
  • La cascade des requêtes (waterfall) : dans GTmetrix, elle montre quel fichier, de quel plugin ou de quel domaine, retarde l’affichage.

Dans l’administration, Outils > Santé du site fait une partie du diagnostic. Depuis WordPress 6.1, elle interroge ta page d’accueil depuis le serveur lui-même, compare le temps de réponse médian à un seuil recommandé de 600 millisecondes, et signale l’absence de cache de page ou de cache objet persistant (source : WordPress Core, 2022). Ces deux contrôles ne tournent qu’en environnement de production.

Après chaque modification, vide le cache, relance le même test et note l’écart : c’est le seul moyen de savoir quel levier a vraiment servi. Ces chiffres te disent où creuser, pas comment. Sur la performance web et les Core Web Vitals, cet article de fond détaille les seuils à viser en 2026.

2. Vérifie ton hébergement en premier

Un TTFB au-delà de 0,8 seconde avec peu de plugins actifs et un cache en place, c’est presque toujours le serveur.

Ce qu’il faut faire :

  • Regarde ta version de PHP dans Outils > Santé du site, onglet Info, section Serveur. WordPress recommande PHP 8.3 ou plus récent, et MySQL 8.0 ou plus ou MariaDB 10.11 ou plus. Il tourne encore sur PHP 7.4 et MySQL 5.5.5, mais ces versions sont en fin de vie et exposent le site à des failles (source : WordPress.org, 2026).
  • Vérifie le calendrier de ta branche PHP. Au 9 octobre 2026, PHP 8.2 ne reçoit plus que des correctifs de sécurité, jusqu’au 31 décembre 2026, et PHP 8.3 jusqu’au 31 décembre 2027 ; PHP 8.4 et 8.5 sont en support actif (source : PHP.net, 2026). La documentation de WordPress rappelle que les nouvelles versions de PHP sont conçues pour être plus performantes (source : WordPress.org, 2026).
  • Passe en VPS ou en hébergement WordPress managé si le TTFB reste au-delà de 0,8 seconde après les étapes suivantes.

3. Règle les directives PHP qui font échouer les opérations lourdes

Quand WordPress s’interrompt sur une opération lourde (import, sauvegarde d’une page de constructeur, envoi d’un gros média), les limites PHP sont souvent en cause. Voici les valeurs par défaut documentées par PHP (source : PHP.net, 2026 et PHP.net, 2026) ; ton hébergeur les modifie souvent.

DirectiveRôleDéfaut PHPSymptôme si trop basse
memory_limitMémoire qu’un script peut allouer128MErreur fatale de mémoire, écran blanc ou message d’erreur critique
max_execution_timeDurée maximale d’un script, en secondes30Import ou sauvegarde interrompus
max_input_timeDurée maximale d’analyse des données reçues-1 (reprend max_execution_time)Envoi de gros fichiers interrompu
max_input_varsNombre de variables acceptées par requête1000Variables en trop supprimées : menu ou réglages enregistrés à moitié
post_max_sizeTaille maximale des données envoyées en POST8MFormulaire ou fichier envoyé ignoré
upload_max_filesizeTaille maximale d’un fichier envoyé2MRefus à l’envoi d’un média

Deux règles tirées du manuel PHP : post_max_size doit dépasser upload_max_filesize, et memory_limit doit dépasser post_max_size.

Côté WordPress, la ligne define( 'WP_MEMORY_LIMIT', '256M' ); dans wp-config.php demande plus de mémoire. Par défaut, WordPress tente de monter à 40 Mo sur un site simple et à 64 Mo en multisite ; certains hébergeurs bloquent cette augmentation, et seule la limite du serveur compte alors (source : WordPress Developer Resources, 2026). Elementor et WPBakery exigent tous deux au moins 256 Mo (détail plus bas). Le rôle de chaque directive et la façon de la régler selon ton hébergeur sont détaillés dans notre guide des directives PHP WordPress.

4. Audite tes plugins un par un

Sur une copie de test du site si tu en as une, désactive tous tes plugins et mesure le TTFB. Il chute ? Un plugin est en cause.

Méthode de bisection : réactive la moitié des plugins, teste. Lent ? Le coupable est dans cette moitié. Répète jusqu’à isoler le plugin problématique.

Points à vérifier sur chaque plugin actif :

  • Charge-t-il des scripts sur toutes les pages, ou seulement où il sert ? Query Monitor affiche, page par page, les requêtes SQL, les scripts et feuilles de style chargés et les appels HTTP externes.
  • A-t-il une option « charger uniquement sur les pages X » dans ses réglages ?
  • Est-il maintenu ? Sur sa fiche wordpress.org, compare « Dernière mise à jour » et « Testé jusqu’à » avec ta version de WordPress : une extension abandonnée est un risque de lenteur et de sécurité.
  • Fait-il doublon avec WordPress ? Le lazy loading des images est natif depuis WordPress 5.5 : une extension qui ne fait qu’ajouter cet attribut est superflue.

La méthode détaillée est dans notre guide pour trouver le plugin qui ralentit WordPress avec Query Monitor. Si un plugin a cassé ton site après une mise à jour, la procédure de rollback propre est détaillée dans cet article.

5. Compresse et redimensionne tes images

Dans la cascade de GTmetrix, regarde d’abord les images : ce sont les fichiers qu’on allège le plus facilement. Règles concrètes :

  • Format : WebP par défaut. À qualité visuelle équivalente, une image WebP avec perte est 25 à 34 % plus légère qu’un JPEG comparable (source : Google for Developers, 2026). WordPress accepte le WebP depuis la version 5.8 (source : WordPress Core, 2021) et l’AVIF depuis la 6.5 (source : WordPress Core, 2024), si la bibliothèque d’images du serveur (Imagick ou GD) les gère. En revanche, il ne convertit pas tes JPEG : par défaut, seules les photos HEIC et HEIF sont converties, en JPEG (source : WordPress Developer Resources, 2026). Pour convertir la médiathèque existante en masse, Imagify ou ShortPixel génèrent les versions WebP et AVIF.
  • Dimensions : une image affichée sur 800 px de large n’a pas besoin d’être envoyée en 3 200 px. Depuis WordPress 5.3, toute image de plus de 2 560 pixels de large ou de haut est réduite à cette taille, qui devient la plus grande disponible (source : WordPress Core, 2019). C’est un garde-fou, pas une optimisation : règle les tailles intermédiaires dans Réglages > Médias et insère la taille adaptée.
  • Lazy loading : activé nativement depuis WordPress 5.5 sur les balises <img> qui ont une largeur et une hauteur (source : WordPress Core, 2020). Vérifie que ton thème ne le désactive pas. L’attribut loading="lazy" ne concerne que les balises <img> et <iframe> (source : MDN, 2026) : une image de fond posée en CSS, comme les fonds de section des constructeurs de pages, n’en profite pas.
  • Images de héros : la première image visible à l’écran, souvent l’élément LCP, ne doit jamais être en lazy load. Donne-lui fetchpriority="high", comme le recommande le guide d’optimisation du LCP (source : web.dev, 2026). Depuis la version 6.3, WordPress ajoute lui-même cet attribut à l’image qu’il juge la plus susceptible d’être l’élément LCP, et ne la charge jamais en différé (source : WordPress Core, 2023). Vérifie dans le code source de la page que ton image de héros le porte bien.

6. Active un cache de page et un cache objet

WordPress sans cache reconstruit chaque page à chaque visite, PHP et MySQL à chaque requête. Un cache de page enregistre le HTML généré et le sert tel quel, sans toucher PHP ni la base. La documentation de WordPress distingue plusieurs couches : cache de page (par un plugin ou côté serveur, avec Varnish par exemple), cache navigateur, cache objet et cache d’opcode PHP comme OPcache (source : WordPress Developer Resources, 2026).

Plugins éprouvés : WP Rocket (payant), W3 Total Cache, WP Super Cache ou LiteSpeed Cache. Attention à ce dernier : ses fonctions de cache de page exigent un serveur LiteSpeed ou OpenLiteSpeed, ou le CDN QUIC.cloud ; ses autres optimisations marchent sur n’importe quel serveur (source : WordPress.org, 2026).

Paramètres minimum à activer :

  • Cache de pages pour visiteurs non connectés
  • Préchargement du cache, pour que le premier visiteur ne paie pas la génération de la page
  • Minification CSS + JS, puis report (defer) des scripts non critiques ; teste l’affichage après chaque option, car un slider ou un menu qui dépend d’un script différé peut casser
  • Mise en cache navigateur, pilotée par les en-têtes Cache-Control (source : MDN, 2026)
  • Cache des objets si ton hébergeur propose Redis ou Memcached. Santé du site affiche « Vous devriez utiliser un cache objet persistant » quand elle le juge utile ; quand et comment l’activer : notre guide du cache objet Redis

Un cache mal configuré peut générer des boucles de redirection ou des pages obsolètes. Si tu rencontres une erreur ERR_TOO_MANY_REDIRECTS après activation du cache, l’article dédié couvre les causes fréquentes.

7. Nettoie et optimise ta base de données

Une base jamais entretenue accumule révisions, brouillons automatiques et données de plugins désinstallés, ce qui ralentit les requêtes, surtout dans l’administration. WP-Optimize ou Advanced Database Cleaner font le travail en quelques clics. Fais une sauvegarde avant.

Ce qu’il faut nettoyer :

  • Révisions d’articles : WordPress les garde toutes par défaut ; limite-les à 3 à 5 via WP_POST_REVISIONS dans wp-config.php
  • Brouillons automatiques et corbeille, vidée par défaut au bout de 30 jours et réglable avec EMPTY_TRASH_DAYS (source : WordPress Developer Resources, 2026)
  • Commentaires spam
  • Transients expirés, les données temporaires laissées par les plugins
  • Options chargées automatiquement inutiles (table wp_options, colonne autoload). Depuis WordPress 6.6, Santé du site affiche « Les options chargées automatiquement peuvent affecter les performances » quand leur poids total dépasse 800 Ko, et une option de plus de 150 000 octets ajoutée sans réglage explicite n’est plus chargée automatiquement (source : WordPress Core, 2024)

Pour limiter les révisions, ajoute dans wp-config.php :

define('WP_POST_REVISIONS', 5);

8. Sers les fichiers statiques depuis un CDN

Un CDN (Content Delivery Network) désigne un groupe de serveurs répartis en de nombreux endroits, qui répondent à chaque visiteur depuis le serveur le plus proche de lui (source : MDN, 2026). Le plan gratuit de Cloudflare inclut un CDN (source : Cloudflare, 2026). Un CDN rapproche images, CSS et JavaScript de tes visiteurs ; il ne corrige pas un serveur lent à générer les pages, qui reste l’affaire du cache et de l’hébergement. Pour choisir : Cloudflare, BunnyCDN ou QUIC.cloud comparés.

Elementor et WPBakery : les réglages propres aux constructeurs de pages

Un constructeur de pages ajoute sa propre couche : plus de HTML, plus de CSS, des polices et des icônes souvent chargées depuis l’extérieur. Les étapes précédentes restent valables ; voici ce qui s’y ajoute.

Le DOM (Document Object Model) désigne la structure HTML de la page telle que le navigateur la construit, et à laquelle CSS et JavaScript accèdent. Lighthouse avertit au-delà de 800 nœuds et juge le DOM excessif au-delà de 1 400 ; un DOM trop gros rend coûteuse chaque interaction qui le modifie et dégrade l’INP (source : web.dev, 2026). Chaque section, colonne ou widget imbriqué ajoute des conteneurs : sur un site construit avec un constructeur, c’est le premier chiffre à regarder dans l’audit Lighthouse.

Elementor

Vérifie d’abord les prérequis. Elementor fonctionne à partir de WordPress 6.5 et de PHP 7.4 (PHP 8 recommandé), et demande une limite mémoire WordPress de 256 Mo au minimum, 512 Mo recommandés, 768 Mo pour les meilleures performances (source : Elementor, 2026).

Les réglages se trouvent dans Elementor > Editor > Settings, le chemin documenté par Elementor en 2026 :

  • Onglet Performance
    • Optimized Image Loading applique fetchpriority="high" aux images LCP et le chargement différé aux images situées plus bas (source : Elementor, 2026).
    • Lazy Load Background Images charge en différé toutes les images de fond, sauf la première : c’est la réponse au point faible du lazy loading natif.
    • Optimized Gutenberg Loading retire les scripts et styles inutilisés de l’éditeur de blocs.
    • Load Google Fonts Locally sert les polices Google depuis ton serveur plutôt que depuis le CDN de Google. Depuis Elementor 3.32.1, l’option est désactivée par défaut et doit être réactivée à la main (source : Elementor, 2026).
  • Onglet Advanced : dans la liste Google Fonts Load, choisis Swap. Le texte s’affiche dans une police de repli jusqu’au chargement de la police Google, au lieu d’être masqué comme avec l’option Blocking (source : Elementor, 2026).
  • Onglet Features : Inline Font Icons (stable) affiche les icônes en SVG intégré sans charger les bibliothèques Font Awesome et eicons ; Element Caching (expérimental) sert une copie d’un élément au lieu de le recalculer à chaque affichage.

Active une fonction expérimentale sur une copie de test d’abord, puis contrôle les pages en front. Si l’éditeur ne charge plus après un changement, désactive la fonction concernée et vide le cache.

WPBakery

WPBakery demande PHP 7.4 ou plus, MySQL 8.0 ou plus ou MariaDB 10.4 ou plus, au moins 256 Mo de mémoire, et un upload_max_filesize supérieur à 7 Mo pour l’installation (source : WPBakery, 2026). Vise quand même la version de PHP recommandée par WordPress.

Ses réglages sont dans le menu WPBakery Page Builder de l’administration :

  • Module Manager (depuis la version 7.7, à côté des réglages généraux) : désactive les fonctions du constructeur que tu n’utilises pas pour réduire l’empreinte du plugin (source : WPBakery, 2026).
  • General Settings > Google Fonts subsets : WPBakery recommande de n’inclure un sous-ensemble de caractères que si ton contenu en a besoin (source : WPBakery, 2026).
  • Images de fond des rangées : posées en CSS, elles échappent au lazy loading natif. Compresse-les et garde-les à leur taille d’affichage réelle.

Pour les deux constructeurs, ouvre Query Monitor sur une page qui ne les utilise pas : si leurs feuilles de style et leurs scripts s’y chargent quand même, un gestionnaire de scripts (plugin dédié ou intervention d’un développeur) peut les retirer page par page.

Tableau récap : cause → levier

SymptômeCause probableAction
TTFB au-delà de 0,8 secondeHébergement / PHP ancienMise à niveau hébergeur, PHP 8.3 ou plus récent
LCP au-delà de 2,5 secondesImage héros trop lourdeWebP + fetchpriority="high"
Scripts de plugins sur toutes les pagesPlugins trop chargésAudit Query Monitor, désactivation ciblée
Page au-delà de 1 600 KioImages non compresséesCompression + redimensionnement
Lenteur admin onlyBase de données gonfléeNettoyage révisions + options
Lent en production, rapide en localAbsence de cacheWP Rocket / LiteSpeed Cache
Erreur de mémoire en éditant une pagememory_limit trop bas256 Mo minimum avec Elementor ou WPBakery
DOM au-delà de 1 400 élémentsConstructeur, sections imbriquéesRéglages du constructeur, mise en page simplifiée

Quand les réglages ne suffisent plus

Un site lent après optimisation front (images, cache, plugins, constructeur) et qui conserve un TTFB au-delà de 0,8 seconde, c’est presque toujours une question d’infrastructure. À ce stade, changer d’hébergeur ou passer sur un plan managé WordPress est la seule action qui change vraiment la donne, pas un plugin de plus. Même logique si le score Lighthouse mobile reste dans la zone rouge, de 0 à 49 (source : Chrome for Developers, 2026), malgré tous les leviers ci-dessus : le problème est structurel (thème ou constructeur qui génère trop de code) et relève d’un audit, pas d’un réglage.

Quand la lenteur bascule en panne franche, elle prend souvent la forme d’une erreur 502 Bad Gateway : le proxy cesse d’attendre un serveur saturé. Les leviers de cet article règlent la cause commune.

FAQ

Mon site est rapide sur mobile, lent sur desktop, c'est normal ?

C’est souvent l’inverse du problème habituel. Vérifie si tu charges une vidéo ou une image de très grande taille uniquement sur desktop via CSS (display: block sur desktop). Vérifie aussi d’où part le test : GTmetrix propose 28 emplacements, dont Paris et Londres ; choisis-en un proche de ton audience dans l’onglet « Analysis Options » pour avoir des chiffres représentatifs (source : GTmetrix, 2026).

Combien de plugins c'est "trop" ?

Le nombre brut ne compte pas autant que la qualité du code et les scripts chargés. 25 plugins bien codés peuvent peser moins que 5 plugins mal écrits. Utilise Query Monitor pour voir qui charge quoi et où.

Faut-il installer plusieurs plugins de cache à la fois ?

Non. Deux plugins de cache qui se superposent créent des conflits et des comportements imprévisibles. Un seul plugin de cache, bien configuré, suffit largement.

Mon hébergeur dit que "tout va bien côté serveur", je le crois ?

Leur monitoring regarde si le serveur répond, pas si PHP prend 1,2 seconde à générer ta page. Un TTFB élevé mesuré depuis GTmetrix est une preuve externe objective. Montre-leur le waterfall du test, pas juste leur dashboard, et ajoute le temps de réponse médian relevé par Outils > Santé du site, mesuré depuis le serveur lui-même.

Mon site reste lent malgré un plugin de cache, pourquoi ?

Un cache de page ne compense ni un serveur lent ni une page trop lourde. Si le TTFB dépasse 0,8 seconde même sur une page servie depuis le cache, le problème est côté hébergement. Et si la page embarque des images non compressées et des feuilles de style inutiles, le cache envoie simplement plus vite une page lourde : le poids reçu par le navigateur ne change pas. Cache, images et ménage des plugins sont complémentaires.

Faut-il abandonner Elementor ou WPBakery pour avoir un site rapide ?

Pas forcément. Les deux produisent plus de code qu’un thème léger, mais commence par leurs réglages de performance, un cache et des images optimisées, puis mesure. Si tes pages clés restent au-delà de 2,5 secondes de LCP avec un DOM de plus de 1 400 éléments, une refonte (thème plus léger ou éditeur de blocs natif) devient une vraie option, à préparer plutôt qu’à improviser.

Ce problème, Peechy s'en occupe

Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout, hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.

Confier mon site à Peechy