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

- Auteur : WordPress Développement
- Publié le : 2021-04-05
- Mis à jour le : 2021-04-05
- Catégorie : Outils &amp; workflow
- URL : https://www.wpmoderne.fr/outils/wp-cache-wp-config-effet-reel/

## L’essentiel

- 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

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

| Situation | Effet observé |
| --- | --- |
| WP_CACHE à true, pas de fichier advanced-cache.php | Aucun effet, comportement standard |
| WP_CACHE à true, fichier présent et actif | Cache de page fonctionnel |
| WP_CACHE à true, fichier orphelin après désinstallation | Comportement imprévisible, à nettoyer |
| WP_CACHE à false, fichier présent | Fichier 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.
