Cache de site web & cache côté serveur : comment fonctionne le cache WordPress

Mention d'affiliation v3.1
Mention d'affiliation v3.2 (mobile)

En examinant le cache de site web et le cache côté serveur sur le serveur qui héberge ce site, j'ai constaté que les requêtes de pages WordPress descendent dans l'ordre navigateur, CDN, cache de page, OPcache et Redis, et s'arrêtent à la première couche qui possède une copie. Les requêtes de pages arrivées directement sur le serveur d'origine ont reçu de nginx le fichier HTML créé par WP Rocket, sans jamais descendre jusqu'à PHP ni à la base de données.

Ⅰ. Structure du cache WordPress

En informatique, le cache est une technique qui stocke temporairement des données pour y accéder rapidement ; sur le web, il fonctionne selon le même principe et contribue largement aux performances.

En stockant des données, la mise en cache évite de tout redemander au serveur à chaque visite : les données stockées se chargent vite et le temps de chargement des pages diminue. Cela réduit la charge du serveur et améliore l'expérience utilisateur.

Les caches utilisés par les requêtes WordPress se divisent en deux branches : le cache de site web et le cache côté serveur. La norme de cache HTTP, telle que la décrit MDN, distingue le cache stocké dans le seul navigateur d'un visiteur (private cache) des caches CDN et proxy partagés par de nombreux visiteurs (shared cache) ; cet article regroupe les deux sous le nom de cache de site web.

Le cache de page, OPcache et le cache d'objets s'insèrent dans le processus d'exécution de WordPress sur le serveur. La norme HTTP ne leur donne pas de catégorie propre ; la classification vient de la documentation officielle de WordPress: extensions de cache (cache de page), cache d'objets et cache serveur (caches d'opcode comme OPcache).

🗂️ Les caches traversés par une requête WordPress
🌐 Cache de site webCache HTTP · classification MDN
private cacheCache du navigateur
shared cache
proxy cacheProxys des réseaux d'entreprise ou d'opérateur
managed cacheCDN · proxy inverse (Varnish)
🖥️ Cache côté serveurClassification de la documentation officielle de WordPress
Cache de pageHTML statique créé par une extension de cache (WP Rocket)
OPcacheCache d'opcode · exécution PHP
Cache d'objetsDonnées conservées après la requête (Redis)

Pour l'ensemble des domaines où le cache est utilisé, voir l'article Cache : définition et tous les domaines où la mise en cache est utilisée ; pour les quatre branches de l'optimisation des performances, cache compris, voir l'article Optimisation des performances web : structure et définition qui y est consacré.

Dans le simulateur ci-dessous, choisissez un cache dans l'arborescence de gauche et appuyez sur un bouton : vous verrez à quelle couche la requête s'arrête. La première couche qu'un administrateur WordPress active avec une extension de cache est le cache de page.

🧭 Simulateur des couches de cacheSimulateur explicatif
🗂️ Les caches traversés par une requête WordPress
🧰 Type de requête
Cache du navigateur
Le cache HTTP stocké dans le navigateur du visiteur. Choisissez [Image · CSS] et appuyez sur [Première visite] → [Nouvelle visite] : à partir de la deuxième fois, aucune requête n'est envoyée au serveur.
En-têtes de cache HTTP
Les règles par lesquelles le serveur indique au navigateur et au CDN combien de temps conserver une copie. Les lignes d'en-tête du journal de réponses sont des valeurs réelles reçues d'un serveur Nginx + Apache.
CDN · cache proxy
Une copie partagée par de nombreux visiteurs. Activez [Utiliser le CDN] et appuyez sur [Première visite] → [Nouvelle visite] : la réponse s'arrête à l'edge.
Cache de page
Enregistre dans un fichier le HTML produit par PHP. Appuyez sur [Nouvelle visite] : la requête ne descend ni jusqu'à PHP ni jusqu'à la base de données.
OPcache
Conserve en mémoire le bytecode PHP compilé. Avec [Visite après modification de l'article], PHP s'exécute de nouveau, mais sans recompilation.
Cache d'objets
Enregistre les résultats de requêtes dans Redis. Avec [Visite après modification de l'article], seules les données de l'article modifié sont relues dans MariaDB.
Vue d'ensemble
La requête descend de haut en bas et s'arrête à la première couche qui possède une copie.
CoucheEmplacementCe qui est stockéExemple Nginx + Apache
Cache du navigateurAppareil du visiteurHTML · CSS · JS · images · policesCSS · images 7 jours
CDN · cache proxyDevant le serveur (edge · proxy inverse)Copies des pages · fichiers statiquesBunny CDN
Cache de pageDisque · mémoire du serveurHTML produit par PHPWP Rocket + nginx
OPcacheMémoire du serveurBytecode PHPPHP 8.3, JIT désactivé
Cache d'objetsMémoire du serveurRésultats de requêtes · objetsRedis
Un simulateur explicatif qui fonctionne uniquement dans votre navigateur. Les lignes d'en-tête du journal de réponses ont été relevées le 10 octobre 2026 sur un serveur Nginx + Apache ; les valeurs entre parenthèses, comme l'ETag après modification, sont des exemples.

Ⅱ. Cache de site web

Le cache de site web, c'est le navigateur du visiteur et le CDN ou le proxy qui enregistrent une copie selon les consignes de stockage que le serveur indique dans ses en-têtes de réponse. Les en-têtes typiques sont [Cache-Control], [ETag] et [Expires] ; une fois la durée de conservation écoulée, une requête conditionnelle ([304 Not Modified]) vérifie si le contenu a changé.

1️⃣ Cache du navigateur

Le cache du navigateur est le cache HTTP stocké dans le navigateur web du visiteur : il conserve HTML, CSS, JavaScript, images et polices et, lorsqu'une même ressource est demandée à nouveau, soit il ne va pas jusqu'au serveur, soit il vérifie seulement si elle a changé.

La durée de conservation est fixée par le serveur, pas par le visiteur. Le serveur Nginx + Apache ci-dessous attribue 7 jours aux CSS et aux images, et sert les pages HTML sans durée, pour qu'elles soient vérifiées à chaque nouvelle visite.

📨 En-têtes de réponse mesurésNginx + Apache · 2026-10-10
💻 Ordinateur du visiteurCache du navigateur
──────▶① Première requêteGET /style.css
🖥️ Serveur du siteNginx + Apache
💻 Ordinateur du visiteurCache du navigateur
◀──────② Fichier + consigne de stockagecache-control: max-age=604800
🖥️ Serveur du siteNginx + Apache
③ Le navigateur stocke le fichier 7 jours comme indiqué et n'envoie aucune requête au serveur s'il revient pendant cette période.
💻 Ordinateur du visiteurCache du navigateur
──────▶④ Vérification après expirationIf-None-Match: "6ab12775-2ee8"
🖥️ Serveur du siteNginx + Apache
💻 Ordinateur du visiteurCache du navigateur
◀──────⑤ InchangéHTTP/2 304 (sans corps)
🖥️ Serveur du siteNginx + Apache
🖼️ CSS · images
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Côté navigateur, 7 jours durant, la copie stockée est utilisée sans interroger à nouveau le serveur.
📄 Page HTML
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Aucune durée de conservation n'est indiquée : à la visite suivante, le navigateur demande d'abord avec l'ETag si la page a changé.
Si la requête est renvoyée avec le même ETag, le serveur répond sans corps, avec seulement [HTTP/2 304], et le navigateur continue d'utiliser sa copie stockée.

2️⃣ CDN · cache proxy

Le cache CDN ou proxy est un cache partagé par de nombreux visiteurs, placé entre eux et le serveur d'origine. Un proxy direct se trouve du côté des visiteurs, comme dans un réseau d'entreprise, tandis que les proxys inverses et les CDN se placent devant le serveur et répondent avec une copie stockée à la place du serveur d'origine.

Un proxy inverse typique est Varnish Cache, et les CDN comme Bunny CDN ou Akamai suivent la même structure. Avec un DNS géographique, les visiteurs de la région du serveur d'origine peuvent être reliés directement à ce serveur, tandis que les visiteurs d'autres régions reçoivent la réponse d'un edge CDN proche (par exemple Bunny CDN), qui stocke même le HTML.

👤 Visiteur de la région du serveur d'origineLe DNS donne l'adresse d'origine
→
🖥️ Serveur d'origineRépond directement, sans passer par le CDN.
👤 Visiteur d'une autre régionLe DNS donne l'adresse d'un edge proche
→
☁️ Edge Bunny CDNS'il possède une copie du HTML ou du fichier, il répond ici.
→
🖥️ Serveur d'origineN'est atteint que si l'edge n'a pas de copie.

Pour la structure et les avantages d'un CDN, voir l'article Qu'est-ce qu'un CDN ? Pourquoi l'utiliser et ses 5 avantages qui y est consacré.

Ⅲ. Cache côté serveur

Le cache côté serveur intervient une fois la requête arrivée sur le serveur d'origine, pendant que WordPress génère la page. Un serveur configuré avec Nginx + Apache traite les requêtes dans l'ordre ci-dessous ; si une étape trouve une copie, les suivantes sont sautées.

🅐 Quand le cache de page a le fichierLa plupart des requêtes de pages des visiteurs non connectés
① nginx reçoit la requêteLe serveur web reçoit la requête arrivée sur le serveur d'origine.
↓
1️⃣ Cache de page ↓② Réponse avec le fichier du cache de pagenginx envoie tel quel le fichier HTML créé par WP Rocket.x-rocket-nginx-serving-file: HIT
Se termine sans passer par PHP · OPcache · Redis · MariaDB.
🅑 Quand le cache de page n'a pas le fichierPremière visite juste après le vidage du cache · écran de connexion · requêtes AJAX
① nginx reçoit la requêtePas de fichier : la requête passe à Apache.
↓
2️⃣ OPcache ↓② Exécution PHP · OPcacheExécute les fichiers PHP de WordPress sous forme de bytecode compilé.
↓
3️⃣ Cache d'objets ↓③ Cache d'objets (Redis)Les résultats de requêtes et les objets stockés sont récupérés dans Redis.
↓
④ MariaDBN'interroge que les données absentes de Redis ; les données souvent utilisées sont lues dans le pool de mémoire tampon InnoDB (mémoire).
↓
⑤ Réponse · enregistrement dans le cache de pageEnvoie le HTML terminé, que WP Rocket enregistre dans un fichier : la requête suivante sera traitée comme 🅐.
Configuration Nginx + Apache (ne passe à Apache et PHP qu'en l'absence de fichier du cache de page), vérifiée le 2026-10-10.

Une configuration Nginx + Apache peut être choisie en option chez Cloudways et ScalaHosting. Chez Cloudways, vous choisissez pour chaque application soit la pile hybride (Nginx + Apache), soit la pile Lightning (Nginx seul) ; chez ScalaHosting, vous pouvez activer dans SPanel un réglage qui place Nginx devant Apache.

🖥️ Hébergeurs où l'on peut choisir Nginx + Apache
CloudwaysChoix de la pile pour chaque application
Pile hybrideNginx + Apache
Pile LightningNginx seul
Cloudways →
ScalaHostingRéglages du serveur web dans SPanel
Par défautApache
Activer NginxNginx + Apache
ScalaHosting →
CacheCe qui est stockéQuand c'est stocké
1️⃣ Cache de pagePage HTML terminée🅑 ⑤ À la réponse, WP Rocket l'enregistre dans un fichier
2️⃣ OPcacheCode PHP compilé (bytecode)🅑 ② À la première exécution d'un fichier PHP
3️⃣ Cache d'objetsFragments de données comme les résultats de requêtes et les options🅑 ③ La première fois que WordPress récupère les données

1️⃣ Cache de page

  • ↪️ Cache de page complète ou cache HTML

Le cache de page est aussi appelé cache de page complète (full-page cache) et, comme il stocke du HTML, parfois cache HTML. Il enregistre toute la page web produite par PHP sous forme de fichier HTML statique et, pour la même requête de page, envoie ce fichier sans exécuter PHP. C'est le cas 🅐 dans l'ordre de traitement ci-dessus.

Il est stocké dans la mémoire (RAM) ou sur le disque (HDD/SSD) du serveur : la mémoire est rapide mais coûteuse et limitée, le disque offre beaucoup d'espace mais reste comparativement lent.

TypeExempleStockage et réponse
Extension de cacheWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress enregistre la page dans un fichier HTML, que le serveur web envoie.
Cache du serveur webCache FastCGI de Nginx · LiteSpeed CacheLe serveur web stocke lui-même la réponse PHP et l'envoie à la requête suivante.
Cache de proxy inverseVarnishUn serveur de cache placé devant le serveur web stocke la page et répond.

Avec Nginx + Apache, nginx lit et envoie directement le fichier HTML créé par WP Rocket, et l'en-tête de réponse porte [x-rocket-nginx-serving-file: HIT]. Pour activer et configurer le cache de page avec WP Rocket, voir l'article Guide de configuration WP Rocket qui y est consacré.

2️⃣ OPcache

OPcache stocke en mémoire le code PHP précompilé en bytecode, si bien que le parseur PHP n'intervient plus lorsque le même fichier est réexécuté. Il est intégré par défaut depuis PHP 5.5 ; APC et XCache, utilisés autrefois, ne prennent pas en charge PHP 7 et ne servent plus aujourd'hui. Cela correspond à l'étape ② de 🅑 dans l'ordre de traitement ci-dessus.

TypeStatutDescription
Zend OPcacheIntégré depuis PHP 5.5Le cache d'opcode standard actuel, activé avec [opcache.enable=1].
OPcache JITInclus dans OPcache depuis PHP 8Convertit encore une fois le bytecode en code machine avant de l'exécuter ; activé ou désactivé avec [opcache.jit].
APCAbandonnéLe cache d'opcode utilisé avant OPcache ; sa fonction de cache de données se poursuit dans APCu.
XCacheAbandonnéNe prend pas en charge PHP 7.
WinCachePour serveurs Windows (IIS)Un cache d'opcode que la documentation officielle de WordPress cite à côté d'OPcache.

OPcache s'active avec le réglage PHP [opcache.enable=1], et le JIT, arrivé avec PHP 8, peut être désactivé à part avec [opcache.jit=disable]. Pour l'installation et la configuration, voir l'article Zend OPcache : concept, installation et configuration qui y est consacré.

3️⃣ Cache d'objets

Le cache d'objets stocke les résultats des requêtes à la base de données ou les objets calculés dans un stockage en mémoire comme Redis ou Memcached. Par défaut, WordPress ne garde les objets en mémoire que le temps d'une requête ; il faut lui adjoindre un stockage comme Redis pour que les résultats subsistent après la requête. Cela correspond à l'étape ③ de 🅑 dans l'ordre de traitement ci-dessus.

TypeTypeConservé après la requête ?Description
WP_Object_CachePar défaut dans WordPressNonUn cache intégré qui ne mémorise que le temps d'une requête.
RedisCache d'objetsOuiUn stockage en mémoire distinct, relié via le drop-in de l'extension Redis Object Cache.
MemcachedCache d'objetsOuiUn stockage en mémoire distinct.
APCuCache d'objetsOui (sur le même serveur)Stocke dans la mémoire partagée utilisée par PHP.
FichierCache d'objetsOuiStocke sous forme de fichiers sur le disque.
Pool de mémoire tampon InnoDBCache propre à la base de données · pas un cache d'objetsOuiMySQL et MariaDB gardent en mémoire les données des tables et les index.
Cache de requêtesCache propre à la base de données · pas un cache d'objets—Supprimé dans MySQL 8.0 ; toujours présent dans MariaDB, mais désactivé par défaut.

WordPress se connecte à Redis par le fichier drop-in ([object-cache.php]) qu'ajoute l'extension Redis Object Cache. Pour la procédure d'installation, voir l'article Installer et configurer Redis Cache sur WordPress qui y est consacré.

🔢 FAQ & contenus recommandés

C'est une ancienne copie restée dans le cache de page ou le CDN qui répond. Videz le cache de cet article dans votre extension de cache et, si vous utilisez un CDN, videz aussi la copie du CDN.

Les extensions de cache de page comme WP Rocket n'envoient pas, avec les réglages par défaut, de pages stockées aux utilisateurs connectés. L'administration et les pages vues en étant connecté sont générées à chaque fois par PHP ; OPcache et le cache d'objets assurent alors la vitesse.

Dans Chrome, appuyez sur [Ctrl+Maj+R] (sur Mac, [Cmd+Maj+R]) pour recharger la page actuelle sans le cache. Pour effacer tout le cache stocké, choisissez en haut à droite [Plus] → [Supprimer les données de navigation], puis [Images et fichiers mis en cache].

💾 Articles sur le cache 10 articles
🗂️ Cache
📋 Cache : définition et tous les domaines 📄 Cache de site web & cache côté serveur
📋 Guide de configuration WP Rocket 📝 Zend OPcache 📝 Installer Redis Cache
📝 Qu'est-ce qu'un CDN ? 📝 Varnish Cache
📋 Test de vitesse WP Rocket 📝 Exemples d'amélioration de la vitesse 📝 Extensions de cache et d'optimisation

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

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

Prouvez que vous êtes humain : 7   +   1   =