Accueil > WordPress > Optimisation technique de WordPress > WP-Config.php : optimisez la vitesse de WordPress n°2

WP-Config.php : optimisez la vitesse de WordPress n°2

Publié le 15 novembre 2012 Optimisation technique de WordPress

Chose promise, chose due, voici le second article visant à optimiser les temps de chargement de WordPress.

Dans le 1er volet, nous avons vu comme améliorer grandement le thème que vous utilisez pour le rendre plus rapide : "Optimisez la vitesse d'un thème WordPress". Mais cette optimisation seule est insuffisante puisque qu'il va falloir également optimiser le cache, la base de données ou encore vos plugins si vous voulez un réel gain de rapidité.

Dans ce second volet, nous allons voir comment paramétrer le fichier wp-config.php.

Celui-ci est situé à la racine de votre installation, et voici les paramètres que vous devez configurer.

WP-Config.php
Un exemple de fichier WP-Config.php

Activer le cache par défaut

Auparavant, WordPress avait un système de cache natif qui était activé avec la ligne suivante :

define('ENABLE_CACHE', true);

Malheureusement, celui-ci ne fonctionne plus depuis la version 2.5. Ajoutez cependant cette ligne car elle permettra de faire fonctionner les différents plugins de cache.

define('WP_CACHE', true);

Réduire le nombre de révisions

La ligne suivante permet de réduire le nombre de sauvegardes d'un article : ce qu'on appelle communément une révision. C'est utile pour le travail collaboratif ou pour garder l'historique d'un contenu un peu comme le fait Wikipédia, mais cela occupe une place important sur la base de données, et peut donc ralentir le site.

Avec la ligne suivante, on limite à deux le nombre de ces révisions pour chaque contenu du site :

define('WP_POST_REVISIONS', 2);

Vous avez aussi une méthode plus brutale qui consiste tout simplement à désactiver cette fonctionnalité :

define('WP_POST_REVISIONS',false);

Vous pouvez aussi réduire le temps entre chaque sauvegarde automatique avec la ligne suivante, en changeant le chiffre par la durée souhaitée (en secondes) :

define('AUTOSAVE_INTERVAL', 300);

Et si vous avez un nombre considérables de révisions dans WordPress, et que vous voulez faire le ménage, il vous faudra utiliser une requête SQL dans l'interface de votre hébergement :

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Vider automatiquement la corbeille

Cette fois-ci, la ligne va forcer le vidage de la corbeille pour les contenus ayant plus de X jours : cela inclut les articles, les pages, les commentaires et les médias.

En mettant cette valeur à trois, je m'assure de ne pas surcharger inutilement la base de données de WordPress :

define('EMPTY_TRASH_DAYS', 3 );

Ne pas envoyer de cookies aux sous-domaines

Cette dernière ligne est moins connue et sera pourtant utile pour mettre en place un CDN (Content Delivery Network). Il s'agit de placer sur un sous-domaine (youpi.monsite.com) ou sur un autre nom de domaine vos contenus statiques comme vos images et vos vidéos.

En utilisant d'autres noms de domaine, vous permettez d’accélérer le temps de chargement de ces données. Seul hic, WordPress transmet un cookie inutile pour chacune de ces requêtes. Pour évitez cela, utiliser ces deux lignes de code dans le fichier wp-config.php :

define('COOKIE_DOMAIN', 'www.monsite.com');
define("WP_CONTENT_URL", "http://static.yourdomain.com");

La première est l'URL de votre site. La seconde celle de l'emplacement de vos fichiers statiques. Dans l'exemple ci-dessus, il s'agit d'un sous-domaine mais cela peut être un autre domaine à part entière.

Sécuriser WordPress

Tant que vous êtes dans le fichier wp-config.php, vérifier que ces 4 lignes suivantes sont bien présentes et remplies :

define('AUTH_KEY',        '');
define('SECURE_AUTH_KEY', '');
define('LOGGED_IN_KEY',   '');
define('NONCE_KEY',       '');

Si vous ne voyez pas de clé comme dans l'exemple ci-dessus, rendez-vous à l'adresse suivante pour en générer : https://api.wordpress.org/secret-key/1.1/

MISE A JOUR : utilisez plutôt cette URL https://api.wordpress.org/secret-key/1.1/salt/ (merci à Martin).

Cela permettra de mieux sécuriser votre site Internet (et en plus, cela ne coûte rien).

Augmenter la mémoire allouée

Pour exécuter n'importe quelle action, WordPress fait appel à la mémoire allouée par votre hébergement. Parfois, celle-ci est trop faible et provoque le message d'erreur suivant :

Allowed memory size of xxx bytes exhausted

Pour éviter cela, vous pouvez ajouter cette ligne dans le fichier wp-config.php pour augmenter cette valeur

define('WP_MEMORY_LIMIT', '128M');

Attention cependant :

  • WordPress fixe à 32Mo par défaut la mémoire.
  • WordPress ne pourra pas dépasser la limite imposée par votre hébergeur. Si celui-ci fixe la mémoire allouée à 32Mo, la ligne de code ne permettra jamais de dépasser cette valeur.
  • WordPress testera toujours s'il doit ou non utiliser la fonction. Par exemple si PHP alloue déjà 64Mb, le fait de définir la même valeur dans le fichier wp-config.php ne servira à rien.
Installation de WordPress et fichier wp-config.php
Pour rappel, le fichier wp-config est créé lors de l'installation de WordPress

Et voilà, le tour est joué. Vous n'avez plus qu'à optimiser votre fichier au plus vite.

Daniel Roch

Expert SEO WordPress - Créateur de SeoMix et SEOKEY - Auteur de nombreux livres et conférencier

26 Commentaires

Arnaud Le 15 novembre 2012 à 9h15

Bonjour Daniel,

Je vais suivre tes conseils pour optimiser mes sites sous WordPress avec attention !

Il y a des paramètres que je n'avais pas pensé comme vider automatiquement la corbeille.

Encore de quoi optimiser WordPress, merci :)

Julio Potier (BoiteAWeb) Le 15 novembre 2012 à 9h18

Hello

Je vais peut-être paraitre bizarre mais les clés de sécurité je préfère les laisser vides car WordPress étant bien fait, si c'est vide ou que ça vaut "put your unique phrase here" alors il va entrer en BDD des valeurs à votre place.
Résultat, ces valeurs seront lues de la BDD (sans requête en plus car elle sont dans les options déjà chargées) et non plus du fichier.
Alors vous me direz "oui bon c'est pareil"
Oui ou presque, j'ai recontré plus de plugin vulnérables permettant de lire le contenu des fichiers que des injections SQL, et lire le wp-config, ne pas pouvoir se connecter à la BDD car mon IP n'est pas autorisée, mais garder les clés pour créer une faille CSRF géante sur le site cible, c'est possible. Une affaire de chacun, c'est mon choix comme dirait Jean-Luc.
Qui a dit que je suis parano ? non, j'imagine juste le scénario qui est possible pour pirater un site, c'est mon métier aussi donc bon ^^ ...
Enfin, je ne vous dit pas de le faire, mais sachez que pour info, WordPress gère bien ces clés, vides ou pas la sécurité est la même pour vous.

Merci pour ces infos d'optimisation !

Christophe Le 15 novembre 2012 à 10h05

Bonjour,
Un grand merci pour cet article.
J'ai cependant une question: si on change le nombre de révisions à 2 par exemple et que l'on modifie ensuite un article qui en avait 5. Trois d'entre elles ne s'affichent plus, mais sont-elles effacées ou simplement masquées?

Aurélien Denis Le 15 novembre 2012 à 10h07

Je ne connaissais pas l'astuce pour activer le cache sous WordPress... mais si ce dernier a été désactivé depuis la 2.5 - j'ai connu si si :), n'y a-t-il pas une raison explicative ?

Je ne pense pas que les développeurs de WordPress ait fait cela par hasard, non ?

Sinon, good job !

Christian@Référencement SEO Le 15 novembre 2012 à 11h46

On va essayer tout cela assurément.
merci pour le partage

Marian DENYS Le 15 novembre 2012 à 12h01

Merci Daniel pour ce second article sur l'optimisation de WordPress.

Je ne connaissais pas toutes les astuces comme le vidage de la corbeille au bout de x jours notamment.

Outdoor Le 15 novembre 2012 à 13h42

Merci pour toutes ces informations vraiment pertinentes. Je pense que ça va bien me servir pour mettre à niveau mes blogs sous wordpress. j'aime beaucoup la config pour le nombre de révisions (à noter qu'il y a un plugin qui permet de supprimer d'un coup toutes les révisions quand la base commence à prendre trop de place)

Anthony Le 15 novembre 2012 à 14h07

Merci pour cette nouvelle mine d'information !

Avant de laisser ce commentaire je me suis permis de tester et je n'ai rencontré aucun problème au contraire, un réel gain au chargement de mon blog.

0,128s avant intervention 0,118s après.

Je passe à l'étape 1, l'optimisation du thème.

Haydee Le 15 novembre 2012 à 14h24

Bonjour,

Je viens de faire les 3 premières manips et pour la première fois mon site ne marche plus puis remarche, ça peut être du à mes changements de config.php ?

Autre question : Lorsque je met
/** Réduire le nombre de révisions
define('WP_POST_REVISIONS', 2);
Vider automatiquement la corbeille
define('EMPTY_TRASH_DAYS', 3 );
/**Activer le cache par défaut
define('WP_CACHE', true);

Dois-je changer mes WP par 2 autres lettres que j'ai défini ainsi dans config.php comme suit: $table_prefix = 'xxx_';
Merci !

Fabrice Le 15 novembre 2012 à 15h00

Bonjour Daniel, excellent article comme d'hab ;)

Les plugins de cache (w3 total cache par exemple)n'ajoutent-ils pas, par défaut: "define('WP_CACHE', true);" ?

Pour le vidage et les révisions, j'avoue que j'utilise plutôt le plugin wp-optimize

Daniel Roch Le 16 novembre 2012 à 8h49

@Haydee : pas besoin de changer les préfixes ;)

@Fabrice : certains plugins l'ajoutent automatiquement, mais uniquement s'ils ont les droits d'écriture sur le fichier wp-config ;)

cocole Le 16 novembre 2012 à 11h04

Attention, effacer les révisions d'un article dont on a modifié l'url peut provoquer des erreurs 404.
En effet, c'est la révision qui porte l'ancienne url et la version courante de l'article porte la nouvelle.
Si on efface la révision, on perd par la même l'ancienne version de l'url.

Il faut donc penser à vérifier sur google webmaster tools les 404 et rediriger de l'ancienne vers la nouvelle avec des 301 (il existe des plugins pour ça ou via .htaccess si on a envie de mettre les mains dans le camboui).

Martin Le 18 novembre 2012 à 21h41

Tant qu'à sécuriser WordPress pour empêcher les éventuelles failles XSS, autant préférer api.wordpress.org/secret-key/1.1/salt/ à api.wordpress.org/secret-key/1.1/ !

Daniel Roch Le 19 novembre 2012 à 9h55

@Martin : tout à fait d'accord. J'ai mis à jour l'article. Merci à toi.

Julio Potier (BoiteAWeb) Le 19 novembre 2012 à 9h55

Hello @martin, ces clés ne servent pas à boucher les failles XSS, et tu peux ne pas les remplir que ton site est tout autant protégé en fait, légende urbaine ;)
Ces clés servent dans les hash des pass, des cookies, création des nonces (jetons de sécurité) etc Elles renforcent leur chiffrage. Si le clés sont vides ou valent "put your unique phrase here", WordPress utilise l'url que tu as donné pour en générer et les stocker en BDD. Ensuite lorsqu'il va vouloir lire ces define venant de wp-config, si il les trouve vides ou valent "put your ..." alors il va chercher en BDD (si il ne les a pas, c'est là ou il les génère)
Voilà pour l'info sécu du matin :)

David @Ressources pour Webmaster Le 19 novembre 2012 à 13h18

Encore un article efficace (comme toujours), des commentaires constructifs et bien utiles.

Merci Daniel, je m'en vais optimiser tout ça de ce pas et merci aussi à Julio pour le complément d'info sécurité ;-)

4h18 Le 20 novembre 2012 à 8h55

Question sécurité, on peut aussi changer les droits du fichier wp-config.php.
Sur l'un de mes sites, j'ai passé le truc en chmod 440.
My2cents.

Lionel POINTET Le 20 novembre 2012 à 11h29

Merci Daniel pour la synthétisation de ces différents points de config.

@Aurélien : la constante ENABLE_CACHE servait à activer un cache statique de pages (dans le même genre que ce que fait W3-Total-Cache par exemple), mais celui-ci a été retiré car c'était une fonctionnalité un peu en marge de ce que doit fournir le coeur de WordPress.
Il valait mieux laisser les plugins s'en charger et proposer différentes implémentations (grâce à memcache ou APC par exemple).

La nouvelle constante WP_CACHE sert du coup à activer l'inclusion du drop-in "advanced-cache.php", utilisé par les plugins de cache pour gérer ce cache statique.

Par contre, WordPress n'a pas abandonné le cache pour autant ! Ils sont passé à un cache "objet" non persistant à la place du cache statique : par défaut, tous les appels à "wp_cache_add" sont stockés dans des variables PHP. Ceci évite de faire des centaines de requêtes en base pour les mêmes données (typiquement, les options).

Il est néanmoins possible de rendre ce cache "objet" persistant grâce à un autre drop-in : object-cache.php.
Ce fichier n'a qu'à réimplémenter la classe de WordPress pour se connecter à une couche de persistance (système de fichier, APC, Memcache, Redis...).

Aurélien Denis Le 20 novembre 2012 à 15h03

Merci Lionel de tes explications !!

SamSoul Le 29 novembre 2012 à 23h32

Mouhais...
Rien de neuf en fait...
De bons conseils mais c'est du réchauffé.
Dommage...

Pour ceux que ça intéresse un petit complément à cet article:

http://dev.mathiasphilippe.com/optimiser-le-fichier-wp-config-de-wordpress

https://lashon.fr/configurer-wp-config-options/

http://digwp.com/2009/06/wordpress-configuration-tricks/

Merci tout de même pour ces rappels.
Certains des commentaires précédents sont tout de même instructifs.

Julio Potier Le 30 novembre 2012 à 10h27

@SamSoul Le net est ainsi fait. L'avantage ici, c'est que Seomix fait parti pour moi de la sphère francophone et touche un autre panel d'utilisateurs. Les sites US sont très peus lu et compris et commentés par les utilisateurs français, les 2 autres liens FR, 4 et 2 commentaires, c'est dire la "portée" des articles. Ici ça ouvre un nouveau débat, on donne d'autres conseils et tu le soulignes. Le but n'est pas juste de faire un rappel ou se faire son post du jour, il est là aussi pour faire venir parler, et c'est que qu'a réussi Daniel avec cet article et ses 22 commentaires.

A+ ;)

Niko Le 09 décembre 2012 à 11h52

Hello,
je reviens sur cet article et me demande si il n'y aurait pas un moyen de bidouiller le vidage auto de la corbeille pour supprimer automatiquement les posts
rappel :
tu proposes : define('EMPTY_TRASH_DAYS', 3 );

dans le cas où je souhaite supprimer les posts qui ont 3 jours, cette fonction est elle modifiable ?

Merci d'avance :)

Daniel Roch Le 10 décembre 2012 à 8h45

Malheureusement non : pour faire cela, il faut lancer un CRON tous les jours pour supprimer tous les articles dont la date de publication date de plus de 3 jours. Et en faisant cela, cela provoquera forcément des dizaines et des dizaines d'erreurs 404.

Niko Le 10 décembre 2012 à 8h47

Merci Daniel pour la réponse

dommage, parce que les plugins existants ne me conviennent pas non plus, je vais continuer à le faire via BDD alors

Bon lundi :)

SamSoul Le 11 décembre 2012 à 1h01

@Julio Potier:
Tout à fait d'accord avec toi.
Toutefois, cet article aurait pût être l'occasion de distiller des astuces et infos complémentaires à ce que l'on trouve déjà ailleurs. Un "plus" à la sauce SeoMix.
C'est ce que j'aurais souhaité. Mais comme tu le souligne, ce post en aura certainement contenté beaucoup. Et c'est tant mieux.
Je te rejoins sur ta remarque concernant les commentaires qui apportent une réelle valeur ajoutée à cette article.

En tous cas merci pour ton boulot sur BAW ainsi qu'à l'équipe SeoMix pour ses articles.

Bonne semaine

Marc.D Le 12 mars 2013 à 8h30

Pour ceux qui ont la possibilité de paramétrer leurs taches cron sur leur serveur

j'ai désactivé le fichier wp-cron.php avec la commande suivante (dans wp-config.php):

define('DISABLE_WP_CRON', true);

puis créée une tache cron qui s’exécute toute les 15 min selon la fréquence de vos publications, commentaires ce temps peu varier.

commande à ajouter en cron :

wget -q -O - http://www.domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

ce qui évite d'avoir des appels vers wp-cron.php a chaque utilisateur connectés sur le site

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *