skip to Main Content

Accélérer WordPress en 8 étapes

Temps de lecture 10 minutes

Je rencontre depuis un moment de sérieux soucis techniques sur le site entraînant des pannes serveur répétées.
Un des symptômes est une surcharge CPU trop élevée (>130% par moments) dont les causes ne sont pas encore élucidées pour moi (je ne connais rien de rien à l’administration de serveurs web).

A toute chose malheur est bon, puisqu’en fouinant j’ai (re)découvert quelques astuces permettant d’accélérer un site WordPress que je partage ici avec vous.
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 😉

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 :

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

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 plug-ins 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 :

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 :

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

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

valant 10x mieux qu’un

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 recoit 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.

0 0 vote
Noter cet article

Fabien Elharrar

Consultant en acquisition d'audience, monétisation web et growth hacking.

S’abonner
Notifier de
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

21 Commentaires
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Pyo @Pexiweb
Pyo @Pexiweb
15/05/2012 16:39

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

Ludovic
Ludovic
15/05/2012 17:09

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.

Yann Fageol
Yann Fageol
15/05/2012 17:26
Reply to  Ludovic

Il y a bien un sujet qui traîne et qui suggérait ça par erreur, car l’astuce concernait la localisation et non la barre d’admin.
Il fallait rajouter ceci (désormais inutile à ma connaissance) :

if ( !is_admin() ) { wp_deregister_script( ‘l10n’ ); }

TiPi Com and Web@Social media basque
TiPi Com and [email protected] media basque
16/05/2012 15:26

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 [email protected] media basque
17/05/2012 18:30

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 😀

Yann Fageol
Yann Fageol
20/05/2012 15:04

J’ai fait un test avec/sans avatars et vu que seuls 2 sur 6 des top commentateurs ont un avatar c’est moche 🙁
Planquer le lien est facile mais les référenceurs risquent de croire qu’il a été viré :-S
Je verrai si je remets ça plus tard !

Thierry
Thierry
16/05/2012 19:11

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

Yann Fageol
Yann Fageol
16/05/2012 22:40
Reply to  Thierry

En fait si tu ne définis pas de tâche CRON (ce qui ne peut être fait que sur un serveur dédié) aucune tâche cyclique ou programmée ne sera jamais lancée par WP (planification de publication, vidage de cache, ping programme, etc.)

Sur un site vitrine d’entreprise ce n’est pas gênant mais pour un blog si.
Selon ton hébergement la syntaxe peut être différente par contre, le mieux reste de demander à ton hébergeur un coup de main 😉

Kelly @massage-annonce.com
Kelly @massage-annonce.com
16/05/2012 22:51

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/05/2012 14:30

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/

Yann Fageol
Yann Fageol
20/05/2012 14:54

Mon thème est un thème fait main, ce qui peut expliquer pas mal de lenteurs …
J’ai justement demandé à Daniel de SEOMix de me donner un coup de main 😉

4h18@blogging
23/05/2012 01:16
Reply to  Yann Fageol

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 ?

Yann Fageol
Yann Fageol
23/05/2012 01:33

J’utilise Cloudflare que je qualifierai de « demi-CDN ». Ca décharge vraiment bien le serveur au niveau des images et c’est gratis 🙂

Quelle stats font mal au crane ? Po trop compris :-/

J’ai reçu des devis de plusieurs pro WP pour « nettoyer » le site, mais ça reste un peu cher pour ma bourse et plus coté WP que serveur donc retour à la case départ :'(

4h18
4h18
23/05/2012 11:13
Reply to  Yann Fageol

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.

Yann Fageol
Yann Fageol
23/05/2012 11:30
Reply to  4h18

170 à 200.000 pages vues mensuelles 😉
Je suis une buse j’ai désactivé l’abonnement aux commentaires par erreur ce week-end quand je cherchais un bug et j’ai oublié de le réactiver… Erreur corrigée !

Didier@lunettes solaires
30/09/2012 00:59

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/04/2013 14:54

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
03/06/2013 20:56

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/05/2015 17:53

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
05/10/2015 15:31

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

21
0
Would love your thoughts, please comment.x
()
x
Back To Top
×Close search
Rechercher