Qu’il s’agisse d’un site WordPress à fort trafic ou un « petit » blog sur un serveur mutualisé bon marché, vous devrez optimiser WordPress et votre serveur pour un rendu performant. Cet article fournit un aperçu des optimisations possibles sur une installation WordPress, et des approches recommandées. Toutefois, il ne s’agit pas d’une documentation technique détaillée.
Si vous avez besoin d’une solution rapide, vous pouvez vous rendre directement à la section Mise en cache, vous obtiendrez un résultat probant pour un moindre effort. Si vous souhaitez vous lancer dans des optimisations plus poussées, rendez-vous au paragraphe Comment optimiser les performances de WordPress.
Un aperçu général du sujet de la performance est inclus ci-dessous dans Facteurs de performance et Outils de test de performance. La plupart des techniques abordées ici s’appliquent également aux installations WordPress Multisite (MU).
Facteurs de performance
Plusieurs facteurs peuvent affecter les performances de votre blog (ou site) WordPress. Ces facteurs incluent, sans s’y limiter, l’environnement d’hébergement, la configuration de WordPress, les versions des logiciels, le nombre d’images et leur taille.
La plupart de ces facteurs dégradant les performances sont abordés dans cet article.
Hébergement
Les techniques d’optimisation à votre disposition dépendront de votre configuration d’hébergement.
Hébergement mutualisé
C’est le type d’hébergement le plus courant. Votre site sera hébergé avec de nombreux autres sur un même serveur. L’hébergeur s’occupe de son infogérance, ce qui donne en général très peu de contrôle de votre côté pour sa configuration et sa personnalisation. Dans la plupart des hébergements mutualisés, l’utilisateur a accès à la racine du système de fichiers via SFTP, et à différentes tâches courantes relatives au domaine et à la partition du serveur via à un panneau d’administration.
Les paragraphes les plus pertinents pour ce type d’hébergement sont : Mise en cache, Performance de WordPress, et Contenus déportés.
Hébergement managé
Assez similaires aux hébergements mutualisés, les hébergements managés ont une configuration plus personnalisée en fonction des besoins de l’utilisateur. Cette configuration reste de la responsabilité de l’hébergeur. En général, l’utilisateur ne doit pas (n’a pas le besoin) avoir accès au système de fichiers, et toutes ses tâches courantes sont disponibles dans son panneau d’administration. Certains hébergeurs proposent des offres avancées qui permettent de pousser les personnalisations via un choix élargi d’applications et d’extensions.
De nos jours, la majorité des plateformes de création de contenus sur le web (exemples : blogs, réseaux sociaux) sont des formes d’hébergement managés, dans la mesure où elles fournissent des configurations et des applications spécifiques à des usages prévus.
Serveurs Privés Virtuels (VPS) et serveurs dédiés
Avec ce type d’hébergement, vous avez votre propre serveur ainsi que son contrôle. Vous avez accès à l’ensemble du système du fichier, au protocol SSH, et donc à la capacité d’installer et de configurer les différents logiciels et librairies dédiés au système d’exploitation. Le serveur peut être physiquement une machine et des composants dédiés, ou une virtualisation d’une machine parmi d’autres générée par un serveur.
Ce qu’il faut retenir, c’est que vous pouvez paramétrer votre serveur. En plus des sujets recommandés plus haut (Mise en cache et Performance de WordPress), les paragraphes pertinents sont : Versions et performances logicielles et Contenus déportés.
Nombre de serveurs
Avec des projets à fort trafic, il peut être nécessaire d’avoir recours à plusieurs serveurs. À ce niveau, vous avez normalement déjà appliqué la majorité des bonnes pratiques listées dans cet article.
La base de données WordPress peut être déportée sur un autre serveur. Pour cela, il suffit de faire un simple changement dans le fichier de configuration. De la même manière, les images et les autres fichiers statiques peuvent être déplacés vers des serveurs alternatifs (voir Contenus déportés).
Une machine dédiée peut gérer la répartition de la charge sur les différents serveurs (exemple : Elastic Load Balancer d’Amazon). Ce type de configuration requiert une certaine expertise. Si vous utilisez plusieurs serveurs de bases de données, la classe HyperDB (en anglais) remplace la classe standard WPDB (en anglais), et peut gérer plusieurs serveurs de bases de données dans des structures répliquées et partitionnées.
Performances matérielles
La capacité de votre matériel aura un impact énorme sur les performances de votre site. Le nombre de processeurs, la vitesse du processeur, la quantité de mémoire disponible, l’espace disque et le support de stockage sur disque sont des facteurs importants. Les fournisseurs d’hébergement proposent généralement des performances supérieures sur les offres aux prix plus élevés.
Distance géographique
La distance entre votre serveur et les visiteurs de votre site web a également un impact sur les performances. Un réseau de diffusion de contenu, ou CDN (Content Delivery Network), peut mettre en miroir des fichiers statiques (comme des images) dans diverses régions géographiques afin que tous les visiteurs de votre site bénéficient de performances optimales.
Charge du serveur
Le volume du trafic sur votre serveur et la façon dont il est configuré pour gérer la charge auront également un impact énorme. Par exemple, si vous n’utilisez pas de solution de mise en cache, les performances s’arrêteront à mesure que des requêtes de pages supplémentaires arriveront et s’accumuleront, faisant souvent planter vos serveurs web ou de base de données.
Chez la plupart des hébergeurs, si vos serveurs sont configurés correctement, des volumes de trafic très élevés peuvent être supportés. S’il demeure un besoin de réduire la charge pour votre infrastructure, répartir le trafic sur plusieurs machines permet d’absorber ces volumes.
Un trafic abusif tel que les attaques (DoS, connexion Brute Force), le hotlinking d’images (d’autres sites à fort trafic créent des liens vers vos fichiers images) peuvent également augmenter la charge du serveur. Il est essentiel d’identifier et de bloquer ces requêtes.
Versions et performances logicielles
Il est également important de s’assurer que vous utilisez les logiciels les plus récents (Linux ou Windows, Apache / NGINX, MySQL / MariaDB, PHP, etc.), car les mises à jour logicielles corrigent souvent les bogues et améliorent les performances.
Configuration WordPress
Votre thème aura un impact énorme sur les performances de votre site. Un thème rapide et léger fonctionnera beaucoup plus efficacement qu’un thème mal codé et chargé d’éléments (images, scripts tiers, etc.).
La qualité des extensions installées a également un impact énorme sur la vélocité de votre site. Désactiver puis supprimer les extensions en doublon ou inutiles permettent d’améliorer significativement les performances.
Se tenir au courant des mises à jour de WordPress est également important pour la stabilité de votre installation, et donc de ses performances.
Taille des images
S’assurer que les images de vos publications sont optimisées pour le web entraîne un gain de la bande passante et donc des temps de chargement plus courts, ce qui peut aussi favoriser votre classement dans les moteurs de recherche.
Outils de test de performance
- Des outils en ligne d’analyses comparatives (en anglais) permettent des tests réels de performance d’un site web tout en paramétrant des critères de localisation géographique, de navigateurs et de vitesses de connexion.
- Les outils de développement intégrés aux navigateurs (ex : Firefox ou Chrome) disposent tous de dispositifs de mesure des performances.
Comment améliorer les performances sur WordPress
Optimiser votre site WordPress
Bien choisir ses extensions
L’une des premières méthodes d’optimisation à appliquer, et l’une des plus simples, est de choisir avec parcimonie les extensions avant de les installer. Si une fonctionnalité n’est pas utile pour vos utilisateurs, il faut la désactiver et la désinstaller. N’hésitez pas à mesurer les performances de votre serveur avant et après chaque (dés)installation, cela orientera vos choix.
L’une de vos extensions affecte de manière significative les performances de votre site ? Consultez sa documentation, demandez de l’aide sur le forum d’assistance ou recherchez des alternatives. Des extensions peu installées ou non mises à jour peuvent entrer en conflit avec d’autres, ou même avec le cœur (à jour) et affecter les performances.
Si installer peu d’extensions est souvent cité comme une bonne pratique, il s’avère plus juste de prêter attention à la qualité des extensions. Une extension bien réalisée n’impliquera pas de dégradation notoire des performances. Ainsi 10 « mauvaises » extensions, c’est-à-dire mal codées et mal optimisées, peuvent impacter bien plus négativement les performances que 25 extensions bien optimisées.
Optimiser les contenus
- Fichiers images
- Y a-t-il des images inutiles ? (par exemple, pouvez-vous remplacer certaines images par du texte ?)
- Assurez-vous que tous les fichiers image soient optimisés. Choisissez le bon format (JPG/PNG/GIF) et une compression adaptée pour chaque image.
- Considérez un format d’image plus moderne comme WebP ou AVIF, qui produit des fichiers plus légers en conservant un rendu visuel qualitatif.
- Nombre et taille des fichiers
- Pouvez-vous réduire le nombre de fichiers nécessaires pour afficher la page type de votre site ?
- Lorsque HTTP/1.x est encore utilisé, il est recommandé de combiner les fichiers de même type dans un seul fichier.
- Minifier les fichiers CSS et JavaScript.
Mettre à niveau le matériel
Payer des offres d’hébergements plus chères pour bénéficier de services améliorés et plus appropriées (augmentation du nombre et de la vitesse des processeurs, extension de la mémoire RAM, ou stockage sur des disques SSD ou NVMe) peut être un moyen rapide et efficace d’accélérer votre site internet, surtout si vous atteignez les limites de votre serveur. Dans la mesure du possible, essayez de séparer les services – comme HTTP et MySQL – sur plusieurs serveurs ou VPS (les instances devraient idéalement être au même endroit pour réduire la latence).
Optimiser les logiciels
Assurez-vous que vous utilisez la dernière version du système d’exploitation (par exemple Linux ou Windows Server), la dernière version du serveur web (par exemple Apache ou IIS), la base de données (par exemple MySQL ou MariaDB) et PHP.
Si vous ne parvenez pas à effectuer les tâches ci-dessous, votre hébergeur pourra peut-être en effectuer certaines pour vous, ou vous pouvez demander une aide externe (idéalement, un professionnel du domaine : agence, studio, indépendant). Un bon prestataire mettra à niveau ou déplacera votre compte vers un serveur mis à niveau pour correspondre aux spécifications recommandées, mais tous ne vous aideront pas à gérer/optimiser vos serveurs selon l’offre que vous avez souscrite. Sur des besoins simples, vous pouvez vous tourner vers des offres WordPress + hébergement clé en main, incluant un ensemble de logiciels pré-installés, en versions stables et figées.
DNS : ne gérez pas vos DNS sur votre serveur WordPress. Utilisez un service DNS dédié ou les options de votre registraire de domaine (en général, inclues gratuitement). L’utilisation d’un service externe peut faciliter la bascule entre les serveurs (répliques pour les sauvegardes) durant des cas de maintenance ou d’urgence, ce qui limite les indisponibilités. De plus, cela réduit la charge sur votre serveur web principal. Il s’agit d’un choix simple, mais cela soulagera une partie du trafic et de la charge du processeur.
Serveur web : votre serveur peut être configuré de manière à optimiser ses performances. Il existe différentes techniques pour réduire les temps de chargement pour chaque visiteur, de la mise en place d’un serveur de cache aux paramétrages des entêtes ou de modules (ex: Memcached). Parcourez les documentations relatives grâce aux moteurs de recherche, avec les mots-clés : « apache optimization » ou « optimisations nginx » (NB : les recherches en anglais sont souvent plus exhaustives). La majorité des hébergeurs proposent des options de personnalisations ou des configurations plus performantes en options payantes.
PHP : il existe divers accélérateurs PHP qui peuvent considérablement améliorer les performances de vos scripts PHP. Ces derniers s’appliquent à tous les fichiers PHP, bien au-delà de votre installation WordPress. Vous trouverez plus d’informations sur ces solutions d’optimisation PHP avec les mots-clés « APC » ou « OPcache ». Certains plugins de mise en cache WordPress offrent une prise en charge intégrée pour Memcached, APC et d’autres systèmes de cache Opcode. Les versions plus récentes de PHP incluent généralement de meilleures optimisations de performance.
MySQL/MariaDB : quelques modifications simples des paramètres du cache de requêtes MySQL ou MariaDB peuvent avoir un effet considérable sur les performances de WordPress, car WordPress répète de nombreuses requêtes à chaque demande. InnoDB étant le moteur de stockage par défaut de MySQL, vous devez vous assurer de l’utiliser, et peaufiner ses réglages. Recherchez « mysql optimization (en anglais) », « mysql innodb performance (en anglais) » ou « innodb optimization (en anglais) » pour des documentations et des exemples plus exhaustifs. Avec les mots-clés « mysql convert myisam to innodb (en anglais) », obtenez des informations sur la conversion d’anciennes tables MyISAM en InnoDB.
Autres services : évitez les services de messagerie intégrés à votre serveur (configuration de WordPress par défaut). Pour vos formulaires (contact et autres), préférez une extension de formulaire couplée à un service de messagerie externe.
Mise en cache
Extensions de mise en cache
Des extensions de mise en cache peuvent être facilement installées et permettent de créer puis servir aux utilisateurs des versions statiques de vos contenus, réduisant ainsi la charge de traitement côté serveur. Cela peut décupler voire centupler les performances des pages selon leur typologie et leurs contenus. Vous pouvez obtenir une liste pertinente d’extensions de cache en recherchant « cache » dans le répertoire d’extensions.
Associé à un cache de page au niveau du système tel que Varnish, ce système peut s’avérer encore plus efficace. Si vos publications contiennent beaucoup de contenus dynamiques, la configuration de la mise en cache peut s’avérer plus complexe.
Mise en cache côté serveur
La mise en cache du serveur web est en effet plus complexe, et est généralement utilisée sur les sites à très fort trafic. De nombreuses options sont disponibles, mais elles ne peuvent pas être détaillées dans cette documentation. Les configurations simples gèrent la mise en cache localement, sur le même serveur hébergeant votre WordPress, tandis que les systèmes plus avancés peuvent impliquer plusieurs serveurs (également appelés serveurs proxy inverses), positionnés « devant » les serveurs sur lesquels l’application WordPress est actuellement exécutée. Certains serveurs peuvent également agir en même temps comme proxy inverse. L’ajout d’un cache d’opcode comme Alternative PHP Cache (APC) à votre serveur améliorera considérablement les performances de PHP.
Le Cache Varnish (en anglais) fonctionne de concert avec certaines extensions de cache pour stocker des pages prédéfinies en mémoire et les servir rapidement sans nécessiter l’exécution de la stack Apache, PHP et WordPress..
Cas pratique : l’usage d’une extension de commentaires externes à la place du système natif soulage également les différents types de cache, notamment Varnish qui ne servira que les parties statiques, les parties dynamiques (les commentaires) étant servies par le service tiers.
Mise en cache du navigateur
La mise en cache du navigateur peut aider à réduire la charge du serveur en réduisant le nombre de requêtes par page. Par exemple, en définissant correctement les entêtes des fichiers statiques, c’est-à-dire qui ne changent pas (images, CSS, JavaScript, etc.), les navigateurs mettront ces fichiers en cache sur l’ordinateur de l’internaute. Cette technique permet au navigateur de vérifier si les fichiers ont changé, au lieu de simplement les demander. Le résultat est que votre serveur web peut répondre à beaucoup plus de réponses 304, confirmant qu’un fichier est inchangé, au lieu de réponses 200, qui nécessitent l’envoi du fichier.
Vérifiez les entêtes HTTP Cache-Control (en particulier max-age) et Expires, ainsi que les ETags (Entity Tags) (en anglais) pour plus d’informations.
Certains extensions de cache intègrent la définition des entêtes, du cache navigateur et de l’ETag.
Mise en cache d’objets
L’utilisation d’un cache d’objets persistant permet d’accélérer les temps de chargement des pages en évitant les consultations des scripts PHP à la base de données. Par exemple, les données d’options de votre site doivent être disponibles pour chaque affichage de page. Sans cache d’objets persistant, votre serveur web doit lire ces options à partir de la base de données pour gérer chaque affichage de page. Ces consultations répétitives vers la base de données ralentissent les temps de réponse de votre serveur, et dans le pire des cas, le saturer lors de pics de trafic. Ces ralentissements sont observables depuis l’inspecteur de votre navigateur, et la mesure TTFB (Time To First Byte, ou temps de chargement du premier octet).
Pour que votre site utilise la mise en cache d’objets persistants, votre hébergeur doit vous proposer ce type de service de cache (en anglais) sur votre serveur. Demandez à votre hébergeur/infogérant ou à un prestataire extérieur de vous aider à installer et configurer un serveur de cache d’objets persistants, puis, installez une extension de cache d’objets prenant en charge le serveur de cache installé.
Lectures complémentaires
Contenus déportés
Utiliser un réseau de diffusion de contenu (CDN)
L’utilisation d’un CDN peut réduire considérablement la charge de votre site web. Transférer la recherche et la livraison des images, du JavaScript, du CSS et des fichiers de thème vers un CDN est non seulement plus rapide, mais soulage également de manière notable votre serveur WordPress. Un CDN est plus efficace s’il est utilisé avec une extension de mise en cache. Certains CDN récents incluent également la mise en cache de page complète (FPC) ou « Edge » qui met en cache l’intégralité du contenu HTML du site.
Pour plus de détails, consultez la liste des fournisseurs de services de diffusion de contenu notables (en anglais).
Contenu statique
Tous les fichiers statiques (images, JavaScript ou CSS) peuvent être déplacés vers un autre serveur. Il s’agit d’une technique courante sur les systèmes à très hautes performances (Google, Flickr, YouTube, etc.), mais elle peut également être utile pour des plus petits sites hébergés sur un serveur sous-dimensionné. De plus, déplacer ce contenu sur différents noms d’hôte peut préparer le terrain pour l’utilisation de plusieurs serveurs à l’avenir.
Certains serveurs web, tel lighttpd (en anglais) sont optimisés pour servir des fichiers statiques et peuvent le faire beaucoup plus efficacement que des serveurs web sous Apache.
Le stockage « dans le cloud » (ou Cloud storage) est un service d’hébergement de fichiers statiques dédié, facturé à l’utilisation. Sans frais minimum, il peut être plus avantageux que des serveurs mutualisés ou dédiés, notamment pour les sites à faible trafic.
Noms d’hôte multiples
Il est également possible d’améliorer l’expérience utilisateur en répartissant les fichiers statiques entre plusieurs noms d’hôtes. La plupart des navigateurs n’effectuent que 2 requêtes simultanées sur un hôte. Ainsi, si votre page nécessite 16 fichiers, ils seront demandés 2 à la fois. Si vous répartissez les 16 fichiers entre 4 noms d’hôtes, ils seront demandés 8 à la fois. Cela peut réduire le temps de chargement des pages pour l’utilisateur, mais cela peut augmenter la charge du serveur (si les différents noms d’hôtes sont servis par le même serveur) en créant davantage de requêtes simultanées. Appelé pipelining, cette technique peut aussi saturer la connexion internet de l’internaute en cas d’excès.
La délocalisation des images est l’optimisation la plus simple à mettre en place. Tous les fichiers d’images peuvent être répartis de manière égale entre trois noms d’hôtes ( assets1.example.com, assets2.example.com, assets3.example.com par exemple). À mesure que le trafic augmente, ces noms d’hôtes peuvent être déplacés vers vos propres serveurs dédiés. Remarque : évitez de choisir un nom d’hôte aléatoire, car cela affectera la mise en cache du navigateur et entraînera davantage de trafic, de recherches DNS qui impliqueraient une baisse des performances au final.
De même, tous les fichiers JavaScript et CSS statiques peuvent être délocalisés vers des noms d’hôtes ou des serveurs distincts.
Sous HTTP/2 et HTTP/3, le « pipeline HTTP » est remplacé par le multiplexage, de sorte que l’utilisation des techniques ci-dessus peut ne plus être nécessaire.
Flux
Vos flux peuvent facilement être transférés vers un service externe capable de gérer l’ensemble du trafic de flux et de les mettre à jour à des fréquences plus espacées. Cela peut représenter une économie de trafic importante.
De même, vous pouvez délocaliser vos flux sur un serveur distinct (feeds.example.com par exemple) et ensuite gérer vos propres statistiques de flux/publicité.
Compression
Il existe plusieurs façons de compresser les fichiers et données en provenance de votre serveur afin que vos pages soient livrées plus rapidement aux navigateurs.
Certaines extensions de cache incluent par exemple Minify et Tidy pour compresser et combiner vos feuilles de style et vos fichiers JavaScript, ou prennent également en charge zlib (en anglais), chargée de la compression de sortie (en anglais).
Il est important de compresser vos fichiers multimédias : images, vidéos, audios.
Réglage de la base de données
Nettoyage de votre base de données
Des extensions d’optimisations générales ou spécialistes en base de données peuvent vous aider à nettoyer et réduire la taille de votre base de données.
Vous pouvez également diminuer le nombre par défaut de révision de vos articles et pages.
Ajout de serveurs
Bien que cela nécessite une expertise supplémentaire, l’ajout de serveurs peut être un moyen puissant d’augmenter les performances.
Vous pouvez utiliser des Load Balancers pour répartir le trafic sur plusieurs serveurs web et utiliser HyperDB ou un service de base de données dans le cloud pour un service multiple et/ou plus évolutif.
Il existe de nombreux guides sur le web, dont des conférences WordCamp, relative à la mise à l’échelle de sites WordPress sur des services cloud.
Options de chargement automatique
Les options de chargement automatique sont des paramètres de configuration pour les extensions et les thèmes, et chaque éditeur est libre de les définir. Comme leur nom l’indique, elles sont automatiquement chargées à chaque chargement de page. Avoir trop d’options chargées automatiquement peut ralentir votre site. En règle générale, vous devez essayer de maintenir les options de chargement automatique de votre site en dessous de 800 Ko.
Par défaut, les options chargées automatiquement sont enregistrées dans la table wp_options. Le chargement automatique peut être désactivé individuellement. Pour obtenir des instructions étape par étape relatives à l’affichage et à la modification des contenus de vos bases de données, contactez votre hébergeur.
Si vous utilisez un cache d’objets persistants, les options (qu’elles soient chargées automatiquement ou non) se chargent plus rapidement et plus efficacement.
Ressources supplémentaires
Lectures complémentaires
Conférences WordCamp
- High-Performance WordPress by Iliya Polihronov from WordCamp 2012 (San Francisco) (en anglais)
- WordPress Optimization from WordCamp Israel 2013 (en anglais)
- Presentation on HyperDB and High Performance from WordCamp 2007 (San Francisco) (en anglais)
- 50 tips su Web Performance Optimization per siti ad alto traffico WordCamp Bologna (Italy) 2013 (en italien)
Traduit par Dareth Nhang
Relu par Jenny Dupuy & Patrick Olivaud
Dernière mise à jour le 29 janvier 2025