Le WordPress d'aujourd'hui, décodé pour les développeurs

Outils & workflow

WP_CACHE dans wp-config.php : ce que cette constante déclenche vraiment

Une simple constante à activer, dit-on souvent. En réalité, WP_CACHE modifie le chargement même de l'objet cache. Explication de ce qui se passe réellement.

Par WordPress Développement • 5 avril 2021 • 5 min de lecture • Aucun commentaire
WP_CACHE dans wp-config.php : ce que cette constante déclenche vraiment

« Ajoutez define('WP_CACHE', true); dans votre wp-config.php pour accélérer votre site. » Ce conseil circule depuis des années dans des tutoriels d’optimisation, souvent sans expliquer ce que cette ligne déclenche réellement. Beaucoup de développeurs l’ajoutent par habitude, la retirent parfois par précaution, sans mesurer d’effet perceptible dans un sens comme dans l’autre. Et pour cause : seule, cette constante ne fait presque rien.

Comprendre son rôle exact évite deux erreurs symétriques, celle de croire qu’elle active un cache invisible et magique, et celle de la considérer comme inutile parce qu’on ne voit rien changer après l’avoir ajoutée. Cet article se concentre sur le mécanisme interne déclenché par cette constante, sans entrer dans la configuration d’un cache d’objets externe comme Redis ou Memcached, qui mérite un traitement séparé.

Ce que fait réellement WP_CACHE

Le cœur de WordPress teste très tôt dans son cycle de chargement, dans le fichier wp-settings.php, si la constante WP_CACHE est définie et vaut true. Si c’est le cas, WordPress recherche un fichier nommé advanced-cache.php dans le dossier wp-content et l’inclut immédiatement, avant même le chargement des extensions classiques via le mécanisme habituel des hooks. C’est tout. La constante ne construit rien, ne stocke rien, ne met rien en cache par elle-même : elle ouvre simplement une porte que quelque chose d’autre doit franchir.

Un fichier qui n’existe pas par défaut

Sur une installation neuve de WordPress, le fichier advanced-cache.php n’existe pas. Activer WP_CACHE sans qu’un plugin l’ait déposé revient donc à ouvrir une porte sur un couloir vide. WordPress vérifie l’existence du fichier avant de l’inclure ; en son absence, l’exécution continue normalement, sans erreur visible, mais aussi sans aucun gain de performance.

L'essentiel à retenir : WP_CACHE ne crée aucun cache à lui seul ; Elle conditionne le chargement du fichier advanced-cache.php ; Sans plugin de cache, l'activer seule ne change rien

Qui dépose ce fichier, et pourquoi c’est un plugin de cache de page

Les extensions de cache de page complète, celles qui génèrent des fichiers HTML statiques pour éviter de réexécuter PHP à chaque visite, sont les principales à exploiter ce mécanisme. Lors de leur activation, elles copient un fichier advanced-cache.php dans wp-content et s’assurent que WP_CACHE est défini à true dans wp-config.php, parfois automatiquement, parfois en demandant à l’utilisateur de le faire à la main. Ce fichier, exécuté avant même le chargement complet du cœur, peut alors intercepter la requête entrante, vérifier si une version en cache existe pour cette URL, et la servir directement sans jamais initialiser la boucle WordPress habituelle.

C’est cette possibilité d’intervenir aussi tôt dans le cycle de requête qui rend le mécanisme intéressant : un plugin de cache classique, activé via l’API standard des extensions, ne peut agir qu’une fois le cœur déjà chargé, ce qui limite les gains possibles. advanced-cache.php contourne cette limite en s’exécutant en amont.

Un ordre de chargement à connaître

Voici la séquence simplifiée telle qu’elle se déroule au démarrage d’une requête, dans l’ordre :

  1. WordPress charge wp-config.php et lit la constante WP_CACHE.
  2. Si elle vaut true, WordPress cherche wp-content/advanced-cache.php.
  3. Si le fichier existe, il est inclus immédiatement, avant le chargement des extensions ordinaires.
  4. Le fichier peut alors décider de servir une réponse en cache et d’arrêter l’exécution, ou de laisser WordPress poursuivre son chargement normal.
  5. Si aucune réponse en cache n’a été servie, le cœur continue son initialisation habituelle, charge les extensions actives via plugins_loaded, et construit la page normalement.

Le piège du plugin désactivé mais du fichier resté en place

Un scénario fréquent en maintenance : un plugin de cache de page est désactivé ou désinstallé, mais son fichier advanced-cache.php reste physiquement présent dans wp-content, et la constante WP_CACHE reste à true dans wp-config.php. WordPress continue alors d’inclure ce fichier orphelin à chaque requête. Selon son contenu, cela peut provoquer des erreurs silencieuses, des pages qui semblent figées sur un ancien contenu, ou simplement du code mort exécuté à chaque visite. Le diagnostic passe systématiquement par la vérification de ce fichier avant toute autre piste.

SituationEffet observé
WP_CACHE à true, pas de fichier advanced-cache.phpAucun effet, comportement standard
WP_CACHE à true, fichier présent et actifCache de page fonctionnel
WP_CACHE à true, fichier orphelin après désinstallationComportement imprévisible, à nettoyer
WP_CACHE à false, fichier présentFichier ignoré, aucun effet

Sur un projet en maintenance, le réflexe qui évite bien des heures perdues : avant de suspecter une extension de cache, ouvrir advanced-cache.php et vérifier qu’il correspond bien au plugin réellement actif.

En résumé

WP_CACHE n’est ni un interrupteur de performance ni une case à cocher inoffensive : c’est un signal qui autorise le cœur de WordPress à déléguer, très tôt dans son cycle, l’exécution d’un fichier externe. Sans ce fichier, la constante reste muette. Avec lui, elle devient le point d’entrée d’un mécanisme de cache de page capable de court-circuiter l’exécution complète de WordPress. Comprendre cette mécanique évite d’ajouter la ligne par réflexe, et surtout d’oublier de la retirer proprement quand le plugin qui l’exploitait disparaît.

Laisser un commentaire

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

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi