Comment accélérer WordPress en 8 étapes ?

A cause de plugins trop gourmands, de bugs, ou tout simplement d'un trafic trop important pour votre type d'hébergement, votre site WordPress peut devenir lent.  Voici quelques astuces qui vous permettront de l'accélérer.

Volontairement toutes les problématiques de mise en cache (statique, dynamique, requêtes SQL, cache browser) et d'optimisations techniques (GZIP, Minify, etc.) ne sont pas abordées puisque vous êtes déjà au taquet dessus)

Comment accélérer WordPress en 8 étapes ?

Désactivez WP_CRON

Si vous disposez d'un hébergement dédié, désactivez au plus vite WP_CRON. WP_CRON permet de simuler un processus CRON (une tâche planifiée) seulement comment savoir à quel moment lancer les différentes tâches WordPress sans chrono interne ? En lançant une vérification à chaque affichage de page !

Pour ceux qui suivent cela signifie que chaque fois qu'une page est affichée : hop un check !
Si vous avez 10.000 pages affichées par jour ça fera combien de checks ? Oui vous avez compris, bonjour l'overload CPU.

Pour corriger cela, rajoutez la ligne suivante dans le fichier /wp-config.php :

define('DISABLE_WP_CRON', true);

Créez ensuite une vraie tâche CRON via votre interface d'administration.
Avec CPANEL pour un lancement de tâches touts les heures cela ressemblera à ça :

* */1 * * * php /home/MONSITEWEB/public_html/wp-cron.php

Mettez en place une page 404 statique : Google m’a tuer

Quand vous faites des modifications structurante de votre site, il faut faire le nécessaire dans le .htaccess de son site ou faire appel à un plug-in comme Redirection qui vous permettra de mettre en place facilement des redirections 301 avec expressions régulières.

Mais même si vous faites tout cela dans les règles de l'art, impossible d'échapper aux multiples reliquats encore présents plusieurs semaines dans les index de Google.

Et que se passe-t-il si votre page 404 comporte plein de requêtes SQL (si vous avez une mauvaise bonne idée comme moi) ?
Vous subissez une « Attaque GoogleBot » qui va générer plusieurs dizaines de milliers de requêtes SQL en quelques minutes.

Plantage mySQL garanti …

Identifiez les plugins gourmands

Certains plug-ins sont codés avec les doigts de pieds, de dos la nuit et la tête en bas.
Par conséquent on trouve des choses affreuses comme des requêtes SQL avec des * par exemple, des resultats non mis en cache et j'en passe. Je suis bidouilleur auto-didacte crado en PHP mais même moi je suis horrifié en regardant certains morceaux de code …

Afin d'identifier rapidement les plug-ins les plus consommateurs, installez Plugin Performance Profiler qui vous permettra d'éliminer certaines brebis galeuses …

Nettoyez votre base de données

ATTENTION : cette section donne quelques astuces pour optimiser votre base de données. Les manipulations proposées sont dangereuses et peuvent endommager de façon irréversible votre site. Passez à la section suivante si vous n'êtes pas sur de comprendre exactement les conseils indiqués

La plupart des plug-ins créent des champs dans vos bases de données pour stocker les différents paramètres nécessaires à leur bon fonctionnement.
C'est grâce à ce mécanisme que vous ne perdez pas vos réglages après une désactivation / réactivation d'un plug-in.

Par conséquent ces fameux paramètres ainsi que certaines données temporaires peuvent continuer à polluer votre base de donnée inutilement et ralentir les requêtes SQL.

Clean Options va vous permettre de supprimer ces champs orphelins.

Delete Custom Fields vous permettra également de supprimer en masse les champs personnalisés créés par certains plug-ins qui ne vous servent plus à rien.

Une fois ce nettoyage terminé il ne vous restera plus qu'à supprimer les tables inutiles et à lancer une optimisation de votre base de donnée via phpMyAdmin ou en utilisant l'excellent plug-in WP-DBManager.

Evidemment une fois ces opérations effectuées, désactivez Clean Options et Mass Custom Fields Manager, mais comme vous avez bien lu le point précédent vous l'aviez déjà fait bien sur 😉

Déchargez les feuilles de styles et les scripts

J'utilise beaucoup trop de plug-ins. Or les plugins ont la mauvaise habitude de charger des scripts et des feuilles de styles à peu près partout, y compris quand aucun besoin de ne le justifie et jusque dans le back-office de WordPress.

Il est conseillé d'identifier les feuilles de styles chargées, de recopier leur contenu dans le fichier style.css de votre thème et de désactiver leur chargement au moyen d'un code de ce type à insérer dans le fichier functions.php de votre thème :

add_action( 'wp_print_styles', 'creerunblog_deregister_styles', 100 );
function creerunblog_deregister_styles() {
        wp_deregister_style( 'commentluv_style' );
        wp_deregister_style( 'contact-form-7' );
        wp_deregister_style( 'wp_greet_box_style' );
        wp_deregister_style( 'mailchimpSF_main_css' );
        wp_deregister_style( 'wp-postratings' );
}

Suivant la même idée il peut être intelligent de décharger certains scripts en fonction de la page affichée.
J'ai intégré un script de ce type :

add_action( 'wp_print_scripts', 'creerunblog_deregister_scripts', 100 );
function creerunblog_deregister_scripts() {
        if ( !is_page()) {
                wp_deregister_script( 'contact-form-7' );
        }
        if ( !is_single()) {
                wp_deregister_script( 'wp-postratings' );
                wp_deregister_script( 'commentluv' );
                wp_deregister_script( 'wp_greet_box' );
        }
}

Chargez les fontes externes en premier

J'utilise une fonte Google ce qui me semble nettement plus intéressant que de passer par Cufon par exemple : http://www.google.com/webfonts.

Seul hic, comme un imbécile j'avais intégré le chargement de la fonte bien après le chargement du header.
Résultat la fonte n'apparaissant qu'une seconde après le chargement de la page ce qui donne une impression supplémentaire de lenteur.
Intégrer le code Google Font au tout début du header résout le problème instantanément 🙂

Allégez le code HTML

On ne le redira jamais assez, il est tentant d'utiliser des tableaux HTML, plus faciles à manipuler que des calques dans certaines configuration de mise en page complexe.
Bannissez-les autant que possible car ils ralentissent considérablement le temps d'affichage des pages, surtout si comme moi vous en mettez une trentaine sur certaines pages !

Dans le même gout évitez autant que possible d'intégrer des bout de mise en forme CSS au sein des éléments de vos pages.
Je fais de multiples tests à coup de :

style="border:1px solid red;margin-left:2px;"

Quand c'est occasionnel ça passe encore, quand (et je plaide coupable) vous avez jusqu'à 100 morceaux de CSS éparpillés ici et là sur la même page, vous poussez les navigateurs au crash 🙁
Privilégiez les classes CSS, un : class="toto"

valant 10x mieux qu'un style="..."

Cerise sur le loukoum, ce sera nettement plus pratique à maintenir 😉

Analysez les pages à fort trafic

Remarque tellement évidente que je ne l'avais pas moi-même suivie : analysez en priorité les pages à plus fort trafic de votre site. Si par exemple une page reçoit plusieurs milliers de hits par jour et comporte 500 commentaires, il peut être avisé de masquer/désactiver les commentaires ou de passer par un service externe de type Disqus pour ne pas générer inutilement des centaines de requêtes SQL et stresser le browser de l'internaute.

Ce n'est qu'un exemple bien sur, à adapter selon la structure de vos pages.

votes
Noter cet article
S’abonner
Notifier de
guest
21 Commentaires
le plus populaire
le plus récent le plus ancien
Inline Feedbacks
View all comments
Pyo @Pexiweb
Pyo @Pexiweb
15 mai 2012

Je ne connaissais pas l’astuce du cron ! Ty !

Ludovic
Ludovic
15 mai 2012

C’est bien la première fois que je lit un article qui traite de l’optimisation du chargement de wordpress de manière concrète! Généralement les bloggeurs se contente de donner des conseils. Il y a une autre chose que tu faire mais que tu n’a spas évoqué c’est de supprimer la barre admin sur le front office pour les internautes non connectés car elle se charge aussi.

TiPi Com and Web@Social media basque
TiPi Com and Web@Social media basque
16 mai 2012

Pas mal du tout pour des conseils de « novice » 😉

J’ai vu que tu as amélioré le footer aussi, tu vois quand tu veux 🙂
Sinon, tu as désactivé les icônes du footer pour voir si elles te faisaient ramer ?

Je vais m’atteler à la page statique 404 quand j’aurai un peu de temps tiens.

TiPi Com and Web@Social media basque
TiPi Com and Web@Social media basque
17 mai 2012
Reply to  Créer un blog

Pour les images, oui c’est un peu de lag mais tellement plus de visuel. Essaye de les faire précharger en cache pour gagner de la vitesse.

Les gravatars manquent un peu mais ce n’est pas impératif. Pour le lien DoFollow, si tu le « dissimules » aux yeux des internautes mais pas des moteurs, ce serait wonderfull je pense 😉 D’ailleurs, faudrait penser à modifier ce « from » par autre chose 😀

Thierry
Thierry
16 mai 2012

Bonjour,
Merci pour l’astuce, concernant wp cron est ce que cette manip est obligatoire

* */1 * * * php /home/MONSITEWEB/public_html/wp-cron.php
? Merci

Kelly @massage-annonce.com
Kelly @massage-annonce.com
16 mai 2012

Tu as tout dit la Fabien. J’ajouterais juste d’essayer d’optimiser le contenu en se débarrassant des choses inutiles et avec de bonnes soumissions d’articles qui touchent l’internaute. Afin, merci pour ces astuces et a bientôt.

blog e-commerce
blog e-commerce
20 mai 2012

De nombreux plugins et les multiples appels de fonctions en php sont les principales raisons des lenteurs d’affichage des pages avec WordPress.
J’ai aussi le problème et il faut aussi faire attention au choix de son thème qui peut réserver de mauvaises surprises !
voici un article qui traite du sujet: http://www.seomix.fr/optimisez-vitesse-wordpress-theme/

4h18@blogging
4h18@blogging
23 mai 2012
Reply to  Créer un blog

Dis moi, question con, tu utilises un CDN ? Parce que je viens de regarder tes stats, elle font mal au crâne quand même (:

Je ne sais pas comment est dimensionné ton serveur, mais un CDN type cloudflare.com ou mieux, un amazon S3 ne lui ferait pas de mal.

Bon, pour Amazon, faut prévoir des sous, surtout avec ton trafic.

Sinon, toujours pas trouvé un sysadmin pour te filer un coup de main ?

4h18
4h18
23 mai 2012
Reply to  Créer un blog

Ouais, cloudFlare aide pas mal.

Je vais voir sur mon twitter si j’ai un expert sysadmin pour ton serveur.

Pour les stats, tu as du monde, beaucoup de monde, ou alors j’ai mal lu :p C’est en cela qu’elles « font mal à la tête ».

PS : On peut pas s’abonner au commentaires chez toi ??? Pas pratique ça.

Didier@lunettes solaires
Didier@lunettes solaires
30 septembre 2012

Très bien pensé, le deregister pour ne pas charger les scripts et styles sur les pages où ils sont inutiles. C’est exactement ce qu’il me fallait (parce que jQuery & co, sur toutes les pages…)
Merci pour l’astuce! 🙂

Mr. Drole
Mr. Drole
19 avril 2013

Merci bien pour tout ces conseils, je suis passé de 2.4 (oui oui –‘), à 1.6 en moyenne. Toujours pas top, mais il y a du mieux

Nesasio
Nesasio
3 juin 2013

Bonjour, merci pour ces quelques astuces intéressantes. Je vous invite à consulter mon tutoriel (http://www.nesasio.net/tutoriels/rendez-votre-site-rapide-comme-leclair-en-14-etapes-28/) sur le sujet justement, pour vous aider à économiser encore plus de charge serveur.

Astuces Wordpress
Astuces Wordpress
10 mai 2015

Un plugin de cache aussi est essentiel et pour ce qui est de CloudFlare l’expérience est vraiment aléatoire d’un site à l’autre.
Je me permet de vous proposer de jeter un coup d’oeil à mon article sur le sujet: http://www.tutosblog.com/2015/03/accelerez-vitesse-chargement-site-wordpress-serveur-mutualise.html

services web
services web
5 octobre 2015

Merci pour toutes ces idées, cet article est très riche de conseils importants pour accélerer un site wordpress…