Comment réduire le nombre de requêtes SQL sous WordPress

Si votre site internet est trop long à charger, non seulement une partie de vos visiteurs n’aura pas la patience d’attendre, mais Google vous sanctionnera également dans ses résultats de recherche.
C’est pourquoi, comme de nombreux webmasters, je suis toujours à la recherche d’optimisations pour mon blog WordPress.
Je vous propose ici quelques astuces qui permettront de réduire très fortement le nombre de requêtes SQL de votre blog et donc de gagner de précieuses secondes.

Réduisez le nombre de requêtes SQL de votre thème

Un certain nombre d’éléments sont affichés dynamiquement dans les thèmes WordPress alors que leurs valeurs sont figées, ce qui génère des requêtes en base inutiles à chaque affichage de page.
Il est donc conseillé de remplacer dans votre fichier header.php tous les appels à la fonction PHP bloginfo(‘…’) par leurs valeurs statiques.
Si votre blog Mon Blog intitulé Un Blog super chouette a pour adresse http://www.mon-blog.com/, que WordPress est installé à la racine du site, et que vous utilisez le thème mon-theme vous devrez faire les modifications suivantes :
name -> Mon Site
description -> Un blog super chouette
admin_email -> [email protected]
url -> http://www.mon-blog.com/
wpurl -> http://www.mon-blog.com/
stylesheet_directory -> http://www.mon-blog.com/wp-content/themes/mon-theme
stylesheet_url -> http://www.mon-blog.com/wp-content/themes/mon-theme/style.css
template_directory -> http://www.mon-blog.com/wp-content/themes/mon-theme
template_url -> http://www.mon-blog.com/wp-content/themes/mon-theme
atom_url -> http://www.mon-blog.com/feed/atom
rss2_url -> http://www.mon-blog.com/feed
rss_url -> http://www.mon-blog.com/feed/rss
pingback_url -> http://www.mon-blog.com/xmlrpc.php
rdf_url -> http://www.mon-blog.com/feed/rdf
comments_atom_url -> http://www.mon-blog.com/comments/feed/atom
comments_rss2_url -> http://www.mon-blog.com/comments/feed
charset -> UTF-8
html_type -> text/html
language -> fr-FR
text_direction -> ltr
version -> 3.0

Réduisez le nombre d’extensions installées

Ce qui génère le plus d’appels SQL ce sont évidemment les extensions, une bonne méthode consiste donc à limiter le nombre d’extensions installées sur votre blog, pour réduire la charge du serveur.
Facile à dire, mais pas à faire … je suis un très mauvais exemple puisque j’ai plus de 40 extensions installées… mais j’y travaille !
Bon alors on fait quoi maintenant ??

Utilisez des extensions qui disposent d’un système de cache

Certaines extensions disposent d’un système de cache, ce qui permettra de ne lancer des requêtes SQL que lors des rafraichissement de contenus.
C’est le cas des extensions suivantes :

  • Recent Posts, Similar Posts, Similar Posts Feed, Popular Posts et Recent Comments peuvent profiter d’un système de cache grâce à l’extension Plugin Outpout Cache
  • Get Recent Comments qui permet d’afficher les derniers commentaires de votre blog
  • Yet Another Related Post Plugin qui permet d’afficher les articles relatifs à un post

Mettez en cache tous vos widgets

L’extension WP Widget Cache for WordPress propose de mettre en cache carrément tous les widgets de votre thème, ce qui réduira très significativement le nombre de requêtes SQL effectuées à chaque affichage de page.
L’utilisation de cette extension nécessite quelques réglages pour éviter les conflits, mais je lui préfère la solution décrite ci-dessous.

Mettez en cache directement les requêtes SQL

Il existe à ma connaissance deux extensions qui permettent efficacement de mettre en cache toutes les requêtes SQL de votre blog.

  • W3 Total Cache est une extension globale de cache statique dotée de nombreuses options dont un mise cache des requêtes SQL.
  • Je lui préfère DB Cache Reloaded Fix, extension dédiée uniquement à cela.

Avec ces différentes astuces j’ai réduit le nombre moyen de requêtes SQL sur ce blog à 9 par page.
Et vous ça donne quoi ?