Yann "Bug" Dubois

Développeur WordPress freelance à Paris
Flux RSS

Accélérer WordPress – Partie 1 – Etat des lieux

26 May 2009 Par : Yann Dubois Catégorie : Français, WordPress

Temps de téléchargement dans Google Webmaster ToolsEtat des lieux des performances de WordPress

WordPress est un outil efficace, puissant, simple d’utilisation, une sorte de couteau suisse de la publication de contenu original sur Internet. Depuis la dernière version, il se positionne d’ailleurs de plus en plus comme un CMS généraliste, voire comme un framework de génération de site éditorial ou de développement très rapide d’application. Loin du simple outil de blog personnel qu’il est au départ.

Sur le plan des performances techniques pures, on ne peut cependant pas considérer que WordPress est à la hauteur de ce qu’on peut espérer de mieux dans un environnement professionnel PHP/MySql aujourd’hui. Son architecture logicielle est certes sympathique de par son ouverture et son accessibilité, mais son approche pragmatique, qui permet à chacun d’augmenter les possibilités de l’outil de base en y ajoutant ses propres fonctionnalités via des plugins, a un coût très important. La sollicitation de la base de données est notamment peu compatible avec un usage intensif, dès que l’audience du site dépasse quelques connexions par minute en moyenne. En fonction du nombre de plug-ins installé, on a en général plus de 50 requêtes SQL pour construire une page, et ce nombre tend rapidement vers la centaine, car le nombre de plug-ins indispensables à un usage un peu professionnel de Worpress varie d’une demi-douzaine à une bonne vingtaine pour fournir tous les services d’un site moderne. Arrivé là, le nombre de lignes de code à inclure, parser, et compiler dynamiquement pour notre pauvre serveur d’application PHP devient astronomique, et le processeur et la mémoire du serveur web approchent rapidement de la saturation.

Je passe sur certains plug-ins, parfois assez populaire mais conçus avec amateurisme par des contributeurs (j’en fais probablement partie 😉 ) dont la motivation pour le bénévolat ne compense pas toujours le manque de temps (ou de compétences) pour concevoir des briques élémentaires optimisées pour la performance… on ne peut pas en tenir rigueur à des auteurs qui contribuent très majoritairement gratuitement à la communauté !

J’entends déjà d’ici les inconditionnels de WordPress qui vont me crier que cet état des lieux est exagérément pessimiste, et ils ont raison… laissez-moi le temps d’éclaircir le tableau.

Il faut d’abord reconnaître que le coeur applicatif de WordPress, la partie maintenue directement par l’équipe de développement d’origine, comporte plusieurs mécanismes d’optimisation, notamment des systèmes de cache des requêtes SQL les plus gourmandes. Il faut également reconnaître que pour la plupart, les fonctions de base de l’outil sont écrites dans un langage PHP à la fois clair et efficace : cette clarté est, à juste titre à mon avis, prioritaire sur l’efficacité -c’est un jugement personnel assez subjectif, je le reconnais- Le même constat vaut pour l’architecture de base de données MySql : sa simplicité fait son efficacité (n’est-ce pas ce que certains appellent l’élégance en matière d’ingénierie logicielle ?)

Surtout, il faut avoir à l’esprit que l’architecture ingénieuse de WordPress a permis à des développeurs tiers de tirer le meilleur parti des techniques avancées disponibles aujourd’hui en PHP/MySql pour combler les lacunes de l’applicatif de base sur le plan des performances.

Voilà qui va me permettre d’aborder le coeur du sujet, après cette longue entrée en matière qui visait à dresser l’état des lieux du produit tel qu’on le trouve “à la sortie du carton” (out-of-the box, ou plutôt devrais-je dire out-of-the zip !). Je vais donc décrire en détail un exemple de mise en oeuvre d’outils complémentaires qui m’ont permis d’accélérer notablement les performances de quelques blogs que j’administre à titre personnel, et surtout de soulager la charge du serveur, graphes de performances à l’appui.

Lire la suite : Le diagnostic (partie 2)

A lire également...

WordPress › Error

There has been a critical error on your website.

Learn more about debugging in WordPress.