Accélérer WordPress en 8 étapes

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.

Accélérer WordPress en 8 étapes

Vous avez un projet ?

Parlons-en ensemble

Nous contacter

Partager cet article

Noter cet article

1/52/53/54/55/5
Fabien Elharrar - 309 articles
Consultant en acquisition d'audience, monétisation web et growth hacking.
  • Je ne connaissais pas l’astuce du cron ! Ty !

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

    • 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’ ); }

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

    • J’ai recodé ça à la main cette nuit oui 😉
      Les icones n’apportent rien à part des requêtes et du lag non ?
      Je peux les rajouter et planquer les liens dofollow dans les attributs des gravatar. T’en penses quoi ?

      • 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 😀

        • 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

    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

    • 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 😉

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

  • 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/

    • 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 😉

      • 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 ?

        • 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 :'(

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

          • 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 !

  • 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! 🙂

  • 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

    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

    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

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

159 solutions pour monetiser votre blog
RECEVOIR LES MEILLEURS ARTICLES
JE M'ABONNE
Lire les articles précédents :
L’affiliation expliquée par le président de Zanox

L'affiliation est une technique de monétisation de sites web consistant en un partenariat entre un site marchand et un ensemble...

Fermer