Un site WordPress lent fait fuir les visiteurs et pénalise le référencement. Avant de tout réécrire ou de changer de thème, il vaut mieux mesurer où le temps est réellement perdu : dans la grande majorité des cas, le problème vient de l’une des cinq causes ci-dessous. Pour chacune, voici comment la repérer et la corriger.
Commencer par mesurer
Deux chiffres suffisent pour orienter le diagnostic :
- Le temps de réponse du serveur (TTFB) : s’il est élevé, le problème est côté serveur (hébergement, extensions, base de données). Il se mesure en une commande :
curl -o /dev/null -s -w "TTFB : %{time_starttransfer} s\n" https://votre-site.tn/
- Le rapport PageSpeed Insights sur mobile : il montre ce qui pèse côté navigateur (images, scripts, polices).
Sur une copie du site, l’extension Query Monitor détaille ensuite les requêtes SQL et le temps passé par chaque extension.
1. Un hébergement mutualisé sous-dimensionné
Sur un hébergement mutualisé bas de gamme, votre site partage le processeur et la mémoire avec des dizaines d’autres. Un test simple consiste à mesurer le temps de réponse d’une page HTML statique, sans WordPress : s’il dépasse déjà 300 à 400 ms, le problème est à la source, avant même d’ouvrir WordPress.
- Vérifiez la version de PHP : une version récente de PHP 8 est nettement plus rapide que les anciennes, et WordPress la supporte.
- Vérifiez qu’OPcache est activé : il évite de recompiler le PHP à chaque visite.
- Si le site reçoit du trafic régulier ou gère une boutique WooCommerce, un hébergement mieux dimensionné (VPS ou mutualisé haut de gamme) est souvent le gain le plus rentable.
2. Trop d’extensions, ou des extensions mal codées
Chaque extension active ajoute des requêtes, du JavaScript et parfois des appels à des services externes. Ce n’est pas le nombre d’extensions qui compte, mais leur qualité : deux ou trois extensions mal écrites font plus de dégâts que quinze bien codées.
- Dans Query Monitor, l’onglet des requêtes par composant montre quelles extensions interrogent le plus la base.
- Méfiez-vous des extensions qui chargent leurs scripts et styles sur toutes les pages, alors qu’elles ne servent que sur une seule (un formulaire de contact, un slider).
- Sur une copie du site, désactivez les extensions une à une en mesurant le temps de réponse : la coupable apparaît vite.
3. Des images trop lourdes
Une photo de 4 Mo affichée en 600 pixels de large gaspille de la bande passante pour rien.
- Redimensionnez les images avant de les envoyer, ou automatiquement à l’envoi : WordPress génère plusieurs tailles, encore faut-il que le thème utilise la bonne.
- Compressez-les et servez-les au format WebP, que WordPress accepte nativement.
- Gardez le chargement différé (lazy loading) natif de WordPress pour les images situées plus bas dans la page, mais pas pour la grande image du haut, qui doit s’afficher tout de suite.
- Indiquez largeur et hauteur des images, pour éviter que la page « saute » pendant le chargement.
4. Aucun système de cache
Sans cache, WordPress régénère chaque page à chaque visite : il interroge la base de données, exécute le PHP, assemble le HTML. Plusieurs niveaux se complètent :
- le cache de pages (au niveau du serveur ou via une extension comme WP Rocket) sert une page déjà prête : c’est le gain le plus visible ;
- le cache d’objets (Redis, par exemple) accélère les pages qui ne peuvent pas être mises en cache entières, comme le panier d’une boutique ou un espace membre ;
- un CDN comme Cloudflare sert les images et fichiers statiques depuis un serveur proche du visiteur.
Sur une boutique WooCommerce, le panier, la commande et le compte client doivent être exclus du cache de pages, sinon les clients verraient le panier d’un autre.
5. Une base de données qui a grossi sans entretien
Au fil des années, la base accumule des révisions d’articles, des données temporaires (transients) expirées et des réglages laissés par des extensions désinstallées. Certains de ces réglages sont chargés à chaque page : ce sont les options « autoload ». Pour voir les plus lourdes :
SELECT option_name, LENGTH(option_value) AS taille
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto', 'auto-on')
ORDER BY taille DESC
LIMIT 10;
- Limitez le nombre de révisions conservées par article, dans
wp-config.php:define( 'WP_POST_REVISIONS', 5 ); - Supprimez les données temporaires expirées, par exemple avec WP-CLI :
wp transient delete --expired - Supprimez les options et tables laissées par des extensions désinstallées, après avoir vérifié à quoi elles servent.
Tout nettoyage de la base se fait après une sauvegarde vérifiée : voir la règle des sauvegardes que presque personne ne respecte.
Dans quel ordre corriger
Traitez les causes dans cet ordre : hébergement, cache, images, extensions, base de données. Corriger les extensions avant d’avoir un hébergement correct, par exemple, donne des résultats décevants et fait perdre du temps. Et mesurez à nouveau après chaque étape, pour savoir ce qui a vraiment eu un effet.
La check-list
- Mesurer le temps de réponse serveur et le score PageSpeed mobile.
- PHP 8 récent, OPcache activé, hébergement adapté au trafic.
- Cache de pages actif, avec les bonnes exclusions pour WooCommerce.
- Images redimensionnées, compressées, en WebP, avec largeur et hauteur.
- Extensions inutiles supprimées, extensions lentes identifiées et remplacées.
- Révisions limitées, données temporaires et options orphelines nettoyées, après sauvegarde.
- Mesurer à nouveau.
Pour aller plus loin : mon expertise : Développeur WordPress freelance · à lire aussi : WordPress ou builder tout-en-un : que choisir pour un site professionnel ?
