Magazine Blog

8 conseils pour rendre WordPress performant

Publié le 25 août 2011 par Alexandre_julien

8 conseils pour rendre WordPress performant

Le célèbre moteur de Blog / CMS WordPress est de plus en plus utilisé dans des contextes de fortes charges (traffic important).

Contrairement à des CMS plus « professionnels » comme Drupal, eZPublish, WordPress de manière native est très peu abouti en terme de performances surtout au niveau de la gestion du cache.

Dans cet article, je vais vous présenter les éléments essentiels pour que votre instance de WordPress soit performante et pour qu’elle puisse supporter un trafic important en jouant sur la configuration de  Wordpress, l’utilisation de plugins d’optimisations, la configuration de PHP et l’utilisation de logiciels tiers.

1. Alléger au maximum votre WordPress

8 conseils pour rendre WordPress performant
Je pense que tout le monde conviendra que le principal atout de WordPress est sa communauté importante et sa grande quantité de plugins. Aujourd’hui on trouve des plugins pour tout, ajouter des boutons de partages pour les réseaux sociaux, faire des cloud-tags, des sliders jQuery, ajouter du flash, ajouter de l’ajax, … Bref il n’est pas rare de voir des configurations avec 30 plugins installés et en fonctionnement sur le front-office. Le problème étant que tous ces plugins ont un coût sur les performance de votre WordPress. Il est plutôt recommandé de minimiser l’utilisation des plugins utilisés sur le front et de les intégrer directement sur votre thème graphique.

2. Utiliser un plugin avancé de cache comme WPSuperCache ou W3 Total Cache

8 conseils pour rendre WordPress performant

Nativement le système de cache WordPress ne permet pas d’aller bien loin, néanmoins il sert surtout à fournir une API de Cache pour les plugins et pour utiliser des systèmes de cache plus poussés. Deux systèmes de cache sortent du lot : WPSuperCache et W3 Total Cache.
  • WPSuperCache offre principalement des fonctionnalités permettant de produire des pages le plus statiques possibles : générations de pages HTML, de CSS et de javascript. Il permet également d’utiliser un CDN (site miroir pour vos ressources statiques) ce qui convient à une grande majorité de blog et de sites. Il possède également des options de « minifier » qui permet de réduire et d’assembler des ressources JS et CSS en un seul fichier compressé. Il convient à beaucoup de sites, surtout pour ceux qui sont hébergés sur un système mutualisé.
  • W3 Total Cache est quant à lui un système de cache beaucoup plus complet et sophistiqué. Il possède des fonctionnalités similaires à WPSuperCache mais offre une véritable valeur ajoutée sur la mise en cache de données. Il permet d’interagir avec avec des serveurs de cache locaux (APC, eAccelator, XCache) ou distribués (memcached). Nous reviendrons sur ce point un peu plus tard.

3. Un WordPress est performant avec un PHP Performant

8 conseils pour rendre WordPress performant

Il est vivement conseillé d’utiliser les versions les plus récentes de PHP sur votre instance WordPress. Par exemple, la version 5.3.x de PHP consomme facilement 40 % de mémoire en mois et peu faire gagner 30 % de performances par rapport à la version 5.2.x.

Les versions 3.x de WordPress supportent très bien les dernières versions de PHP donc n’hésitez pas à utiliser les versions les plus récentes !

3. Utiliser un accélérateur d’OPCode

PHP est un langage interprété et donc par conséquent il compile le code que vous vous apprêtez à exécuter, puis le déroule. Le problème étant est que PHP recompilera ce code autant de fois que vous l’exécutez si vous l’utilisez pas un système de cache sur le bytecode produit.

Il est existe plusieurs donc 3 principaux qui sont libres :

- APC (Advanced PHP Cache) : excellent, libre, fiable, stable, entretenu par les fondateurs de PHP, c’est le choix que je conseille le plus souvent.

- eAccelerator : un peu plus performant que APC (environ 5% plus rapide en moyenne)

- XCache

- Zend Optimizer+ : fonctionne de manière distribuée mais il est embarqué dans le serveur d’application Zend Server uniquement.

Un cache de compilation peut facilement vous réduire de moitié l’utilisation de la RAM et vous faire gagner des performances non négligeables.

4. Utiliser un serveur de cache pour vos données

8 conseils pour rendre WordPress performant

Stocker les données sur MySQL c’est bien, les mettre sur un proxy de cache c’est mieux !

Autre astuce pour réduire le temps d’accès à vos données est de passer par un serveur de cache. Par défaut les caches de compilation comme APC, eAccelerator et XCache permettent de mettre de faire cela de manière locale.

Toutefois la meilleure solution et la plus performante si votre installation vous le permet est d’utiliser « memcached ». Il s’agit d’un serveur de cache écrit en C++ initialement par LiveJournal pour stocker des données directement dans la RAM avec un système simple de clé => valeur, très rudimentaire mais extrêmement performant, il s’agit du serveur de cache le plus utilisé. Facebook, Twitter, nombres d’e-commerce, ne pourraient tourner sans.

5. Utiliser un MySQL performant et bien maintenu

8 conseils pour rendre WordPress performant

Installer les versions les plus récentes possibles de MySQL pour accroître les performances de l’application là où le cache ne peut pas agir notamment sur l’interface d’administration.

MySQL 5.5 a des performances relativement plus importantes que la version 5.1 donc il vaut mieux se tourner vers les dernières versions, ou encore mieux se tourner vers MariaDB (fork de MySQL 6 non approuvé par Oracle).

Penser également à effectuer régulièrement (1 fois par jour) des optimisations des tables, pour cela des plusieurs comme WP DB Manager vous permette d’inclure cette maintenance dans les tâches de WordPress.

6. Utiliser un serveur Web léger pour vos fichiers statiques

8 conseils pour rendre WordPress performant

Apache est un serveur Web extrêmement stable et complet, cependant, il a tendance à être assez lourd lorsque l’on a une forte charge sur son site Web. Ceci est notamment due au fait que Apache crée un processus léger (thread) pour chaque requête HTTP, si votre serveur vous le permet, je vous recommande d’utiliser un serveur Web léger en plus d’Apache pour tous vos fichiers statiques (HTML, CSS, JS, images, flash, …) en le configurant comme un proxy sur Apache. Le plus connu d’entre eux qui a fait ses preuves est NGINX. Il sera beaucoup moins gourmand que Apache et vous réduira la charge de la machine si vous avez une forte audience. En moyenne, un site WordPress qui utilise un système de cache, distribue 90% de fichiers statiques donc cela vaut le coup de se séparer d’Apache pour un serveur plus puissant !

Les 3 derniers conseils s’adressent majoritairement à des sites à forte audience de plusieurs dizaines milliers de visites quotidienne.

7. Utiliser un CDN (Content Delivery Network)

8 conseils pour rendre WordPress performant

Dans une optique de distribuer le plus rapidement possibles vos ressources statiques et d’économiser la bande passante, il peut être intéressant d’utiliser un CDN pour faire cette distribution. Le but d’un CDN est de jouer le rôle d’un site miroir mais uniquement pour vos fichiers statiques. De plus la plupart des CDN offrent un réseau décentralisé de distribution de données avec des serveurs hébergés partout dans le monde qui sont utilisés en fonction de la location de l’utilisateur. Très pratiques pour les sites internationaux qui ont une audience importante sur divers continents !

Il en existe toute une panoplie, donc MAXCDN.

8. Utiliser un load-balancer et un environnement distribué

8 conseils pour rendre WordPress performant

Nombreux sites d’e-commerce sont contraints de tourner sur plusieurs machines. Pour les CMS, ce cas de figure est plus rare, mais se présente sur des sites à forte charge. Opter pour un environnement distribué coûte moins cher, est plus sûre et plus rentable que d’acheter une machine plus puissante.

Pour mettre cela en place il vous faudra un équipement réseau adapté : le load balancer (répartiteur de charge) qui permet de rediriger le trafic de manière équitable sur « n » machines.

Voici la structure standard d’une architecture PHP simple avec un load balancer :

Dans ce cas, il est impératif de faire attention à certaines choses :

1) Ne pas stocker les sessions en local : utiliser un NAS pour y stocker les fichiers de sessions, ou votre base de données ou encore mieux utiliser Memcached dans votre configuration php.ini.

2) Privilégier un cache de données avec Memcached ou équivalent plutôt qu’avec un système de cache local tel que APC.

3) Penser à partager ou répliquer les ressources du répertoire « wp-includes » de WordPress.

4) Utiliser un distributeur de code source comme rsync pour assurer que vous avez bien les mêmes sources dans les différents serveurs frontaux.

Voilà autant de piste à explorer pour optimiser votre moteur de blog favori, la plupart des optimisations ne sont franchement pas complexes sauf peut être la mise en reverse proxy de nginx sur Apache mais on trouve sur le Web de nombreuses ressources à ce sujet, notamment sur le site de Korbenhttp://korben.info/configurer-nginx-reverse-proxy.html


Retour à La Une de Logo Paperblog

LES COMMENTAIRES (1)

Par alertecatastrophe
posté le 27 août à 11:50
Signaler un abus

Merci des conseil !

A propos de l’auteur


Alexandre_julien 60 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines