Configurer une politique de cache CDN Cloudflare robuste est l’une des tâches d’ingénierie à plus fort impact pour optimiser la vitesse d’un site web d’entreprise en 2026. De nombreuses plateformes web souffrent d’une latence élevée car chaque requête utilisateur doit voyager jusqu’au serveur de base de données d’origine pour générer les pages. Cette dépendance à l’origine retarde les métriques de vitesse First Contentful Paint (FCP) et Largest Contentful Paint (LCP), tandis que le stockage des mises en page statiques et des composants d’actifs dans des emplacements edge à travers le monde offre des réponses rapides et à faible latence depuis l’emplacement edge le plus proche. Ce guide décompose les mécanismes de cache, les règles Edge Cache TTL et les configurations de contournement dynamique par cookie.
[!TIP] Conseil d’optimisation du cache : Évitez de mettre en cache les pages HTML qui contiennent les informations d’utilisateurs connectés. Configurez toujours vos Cache Rules pour contourner le cache edge lorsque des cookies de session spécifiques (tels que les cookies WordPress ou des jetons d’authentification personnalisés) sont détectés dans les en-têtes de requête.
Points clés à retenir :
- Le cache CDN Cloudflare réduit les requêtes de base de données du serveur backend, ce qui diminue les coûts d’hébergement.
- Les Cache Rules permettent aux développeurs de définir des valeurs de TTL personnalisées selon les types de contenu et les répertoires.
- Le déploiement de règles Cache Everything nécessite de configurer des contournements de cookies de session afin d’éviter les fuites de données utilisateur.
- Servir les pages statiques directement depuis les emplacements edge aide les sites web à réussir les Core Web Vitals sur les appareils mobiles.
Configurations de cache : Page Rules vs. Cache Rules
Pour tirer le meilleur parti de vos pipelines de distribution, vous devez choisir le modèle de contrôle approprié dans le tableau de bord. Selon les recommandations de mise en cache des Cloudflare Developer Docs , les anciennes Page Rules sont remplacées par des Cache Rules modulaires. Les développeurs doivent donc mettre en œuvre ces configurations :
Par défaut, les réseaux CDN ne mettent en cache que les formats multimédias, les feuilles de style et les scripts. Par conséquent, vous devez configurer trois options d’actifs essentielles :
- Cache HTML : Pour obtenir des chargements de page instantanés, vous devez demander au CDN de mettre en cache la structure du document HTML. Cela met ainsi fin aux requêtes de base de données.
- En-têtes Cache-Control : Configurez votre serveur backend Symfony ou PHP pour qu’il envoie des directives
s-maxagepersonnalisées indiquant aux serveurs edge combien de temps stocker les pages. De plus, cela autorise des règles de TTL personnalisées. - TTL du cache navigateur : Définissez des durées de vie de cache navigateur plus courtes (par ex. 4 heures) pour garantir que les utilisateurs reçoivent les mises à jour lorsque vous modifiez les mises en page du site. Par conséquent, cela évite les problèmes de décalage de mise en page.
Pour les portails web interactifs, vous ne pouvez pas mettre en cache toutes les pages de manière universelle. Vous devez donc établir deux règles de contournement dynamiques :
- Contournements de session : Créez des règles qui demandent au CDN de contourner la mise en cache lorsqu’une requête transporte des cookies d’authentification ou de session, de sorte que les utilisateurs connectés reçoivent toujours des réponses personnalisées tandis que les visiteurs anonymes continuent d’être servis depuis le cache edge.
- Tri des chaînes de requête : Configurez le cache de base de données edge pour qu’il ignore les variables analytiques mineures (comme les balises UTM) lors de l’évaluation des clés de cache. Par conséquent, cela évite la fragmentation du cache.
Pour déployer en toute sécurité une stratégie de cache edge d’entreprise, suivez cette séquence de validation technique. Adoptez ces quatre étapes d’optimisation :
- Auditez les en-têtes HTTP : Vérifiez que votre serveur d’origine envoie des en-têtes
Cache-ControletVarypropres, sans blocages d’authentification. - Rédigez des Cache Rules modulaires : Configurez des Cache Rules ciblées pour stocker les répertoires de catégories statiques jusqu’à 30 jours.
- Créez des exceptions d’authentification : Créez des règles pour contourner le cache edge lorsque des cookies de connexion sont détectés.
- Déployez des webhooks d’API Purge : Configurez les actions d’enregistrement en base de données pour déclencher des requêtes automatisées vers l’API Purge lorsque vous mettez à jour des pages.
Comparaison des performances : cache edge vs. récupération à l’origine
Pour illustrer les gains de vitesse, le tableau suivant détaille des métriques de chargement réelles :
| Métrique de performance | Récupération au serveur d’origine (sans cache CDN) | Cache edge touché (CDN actif) | Amélioration de vitesse attendue |
|---|---|---|---|
| Time to First Byte (TTFB) | 450 - 800 millisecondes | 15 - 35 millisecondes | Jusqu’à 95% de réponse serveur initiale plus rapide |
| LCP mobile (image la plus grande) | 3.8 secondes (médiocre) | 1.4 secondes (bon) | Réussir proprement les Core Web Vitals |
| Charge CPU à l’origine | Élevée (chaque page interroge la base de données) | Minimale (l’edge gère 90% des requêtes) | Réduction des coûts d’hébergement et stabilité accrue |
Prérequis
Avant de toucher au tableau de bord, assurez-vous d’avoir les éléments suivants en place :
- Un domaine déjà relayé par Cloudflare (le réglage DNS nuage orange, pas gris/DNS uniquement).
- L’accès à votre configuration d’origine – Nginx, Apache ou la couche applicative – afin de pouvoir définir les en-têtes de réponse.
- Un jeton d’API limité à la portée Zone → Cache Purge si vous comptez automatiser les purges. Créez-le sous My Profile → API Tokens.
- Un moyen d’inspecter les en-têtes HTTP bruts :
curlen ligne de commande, ou l’onglet Network dans les Chrome DevTools. - Une URL de préproduction ou un chemin à faible trafic sur lequel expérimenter avant tout déploiement à l’échelle du site.
Un forfait Free ou Pro suffit pour suivre chaque étape ci-dessous. Les Cache Rules sont disponibles sur tous les forfaits, même si quelques options de clé de cache et le Tiered Cache sont réservés aux niveaux supérieurs.
Étape 1 : Envoyer les bons en-têtes Cache-Control depuis l’origine
Cloudflare ne considère une réponse comme cachable que si votre origine ne l’interdit pas activement. La raison la plus courante pour laquelle le HTML n’est jamais mis en cache est une origine qui renvoie un en-tête Set-Cookie ou un Cache-Control restrictif à chaque requête.
Définissez des directives explicites à l’origine. Dans Nginx :
1location ~* \.(css|js|woff2|jpg|png|webp|svg)$ {
2 add_header Cache-Control "public, max-age=31536000, immutable";
3}
4
5location / {
6 # HTML: short browser life, long shared (edge) life
7 add_header Cache-Control "public, max-age=0, s-maxage=86400";
8}
La directive s-maxage cible les caches partagés tels que l’edge Cloudflare, tandis que max-age=0 force le navigateur du visiteur à revalider afin qu’il ne voie jamais de HTML obsolète après un déploiement. Le jeton immutable sur les actifs à empreinte indique aux navigateurs de ne jamais les revalider.
Pour une réponse pilotée par l’application (PHP ou Symfony), exprimez la même intention dans le code :
1$response->setPublic();
2$response->setMaxAge(0); // browser
3$response->setSharedMaxAge(86400); // edge / s-maxage
Les réponses authentifiées ou personnalisées doivent se désinscrire explicitement, sinon une règle trop large pourrait servir la page d’un utilisateur à un autre :
1Cache-Control: private, no-store
Étape 2 : Rendre le HTML éligible au cache avec une Cache Rule
Par défaut, Cloudflare marque le HTML comme DYNAMIC et ne le stocke jamais. Pour changer cela, créez une règle sous Caching → Cache Rules → Create rule.
Écrivez une expression qui correspond aux pages que vous souhaitez mettre en cache tout en excluant tout élément dynamique :
1(http.host eq "example.com"
2 and not starts_with(http.request.uri.path, "/wp-admin")
3 and not starts_with(http.request.uri.path, "/cart")
4 and not starts_with(http.request.uri.path, "/checkout")
5 and not starts_with(http.request.uri.path, "/my-account"))
Définissez ensuite les actions de la règle :
- Cache eligibility : Eligible for cache – l’équivalent moderne de l’ancien comportement « Cache Everything ».
- Edge TTL : Use cache-control header if present, afin que le
s-maxagedéfini à l’étape 1 l’emporte ; repli sur une valeur fixe telle que 1 jour si l’en-tête est absent. - Browser TTL : Respect origin.
Étape 3 : Ajouter un contournement par cookie pour que les utilisateurs connectés ne soient jamais mis en cache
C’est l’étape que la plupart des guides omettent, et celle qui fait fuiter des données quand ils le font. Ajoutez une seconde règle, placée au-dessus de la règle d’éligibilité, qui force un contournement dès qu’un véritable cookie de session est présent. Cloudflare évalue les Cache Rules de haut en bas, de sorte qu’une règle de contournement placée plus haut l’emporte toujours pour les visiteurs authentifiés.
1http.cookie contains "wordpress_logged_in_"
2or http.cookie contains "wp-postpass_"
3or http.cookie contains "woocommerce_items_in_cart"
4or http.cookie contains "comment_author_"
Réglez l’action sur Bypass cache. Pour les stacks non WordPress, remplacez les noms de cookies par l’identifiant de session de votre framework – PHPSESSID, laravel_session, connect.sid, et ainsi de suite. Restreignez bien la portée : faire correspondre ici un cookie analytique large tel que _ga contournerait accidentellement le cache pour chaque visiteur anonyme également.
Étape 4 : Normaliser la clé de cache
Deux URL qui ne diffèrent que par un paramètre de suivi devraient partager un même objet en cache. À l’intérieur de la règle d’éligibilité, ouvrez Cache Key → Query String, choisissez Ignore specific query string parameters, et listez les clés analytiques :
1utm_source, utm_medium, utm_campaign, utm_term, utm_content, fbclid, gclid
Cela regroupe /pricing?utm_source=newsletter et /pricing?gclid=123 en une seule entrée de cache, augmentant votre taux de succès au lieu de le fragmenter sur des milliers de clés quasi identiques.
Comment vérifier un HIT ou un MISS de cache
Ne présumez jamais qu’une règle fonctionne – mesurez-le. Chaque réponse servie par Cloudflare porte un en-tête cf-cache-status. Demandez deux fois la même URL et observez son changement :
1curl -sI https://example.com/ | grep -i cf-cache-status
2# First request: cf-cache-status: MISS
3# Second request: cf-cache-status: HIT
Les valeurs que vous rencontrerez et ce que chacune signifie :
cf-cache-status | Signification | Que faire |
|---|---|---|
| HIT | Servi directement depuis l’edge | Fonctionne comme prévu |
| MISS | Pas encore en cache ; récupéré à l’origine et désormais stocké | Redemandez pour confirmer que cela devient un HIT |
| DYNAMIC | Cloudflare l’a jugé non cachable | La règle ne correspond pas, ou l’origine interdit la mise en cache |
| BYPASS | Une règle ou un contournement par cookie a ignoré le cache | Attendu sur les requêtes connectées |
| EXPIRED | TTL écoulé, revalidé auprès de l’origine | Normal ; augmentez l’Edge TTL si cela arrive trop souvent |
| REVALIDATED | Obsolète, confirmé encore frais via ETag | Normal |
Si vous ne voyez jamais que DYNAMIC, la règle d’éligibilité ne se déclenche pas. Vérifiez le nom d’hôte dans l’expression, puis assurez-vous que l’origine n’envoie pas Cache-Control: private ni de Set-Cookie sur le document HTML.
Pièges courants et dépannage
- Un
Set-Cookiesur chaque réponse. Cloudflare ne met pas en cache une réponse qui définit un cookie. Les plugins d’analyse, les jetons CSRF et les outils de tests A/B en attachent fréquemment un au document HTML. Déplacez cette logique vers une requête asynchrone, ou supprimez l’en-tête sur les chemins cachables. BYPASSsur des visiteurs anonymes. Presque toujours une règle de contournement par cookie trop large – un cookie générique tel que_gacorrespondant à votre expression. Restreignez le contournement aux seuls véritables cookies de session.- Pages obsolètes après un déploiement. L’Edge TTL fait son travail ; vous avez simplement oublié de purger. Déclenchez une purge ciblée à la publication plutôt que de raccourcir le TTL à quelques secondes.
- En-têtes Vary ignorés. Cloudflare ne fait varier son cache que sur
Accept-Encoding; il ne conserve pas de copies distinctes pour unVary: User-AgentouVary: Cookiearbitraire. Servez le balisage spécifique à l’appareil via du CSS responsive ou un Worker plutôt que de vous appuyer sur Vary. - Development Mode resté activé. Il contourne le cache pendant trois heures et fait silencieusement paraître chaque réponse non cachable. Assurez-vous qu’il est désactivé avant de tester.
Considérations de production et purge automatisée
Une fois qu’un seul chemin se comporte correctement, élargissez la règle à l’ensemble du site pendant une fenêtre à faible trafic et surveillez votre taux de succès dans Caching → Overview – un site statique en bonne santé se situe confortablement au-dessus de 90%.
Reliez votre CMS pour ne purger que ce qui a changé plutôt que la zone entière. Une purge ciblée par URL garde les pages voisines chaudes dans le cache :
1curl -X POST \
2 "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
3 -H "Authorization: Bearer ${CF_API_TOKEN}" \
4 -H "Content-Type: application/json" \
5 --data '{"files":["https://example.com/pricing"]}'
Appelez ceci depuis votre hook de publication afin que la mise à jour d’un éditeur soit en ligne en quelques secondes tandis que tout le reste demeure en cache. Pour les grands catalogues, regroupez les URL associées derrière un Cache Tag (Enterprise) ou purgez par préfixe, et activez le Tiered Cache pour augmenter le taux de succès global en acheminant les MISS via un parent régional avant qu’ils n’atteignent votre origine.
Faites appel à un cabinet de conseil Cloudflare vérifié au Royaume-Uni
Prendre les bonnes décisions de mise en cache protège vos serveurs d’origine et accélère la livraison des pages pour chaque visiteur. Mecanik propose des services professionnels d’audit SEO technique et de mise à l’échelle d’infrastructure via notre page développement web . Nous sommes spécialisés dans les intégrations edge Symfony, les Cache Rules Cloudflare personnalisées et les déploiements edge-native. Contactez-nous dès aujourd’hui pour planifier votre atelier de cadrage technique.
Foire aux questions (FAQ)
Qu’est-ce que le cache CDN Cloudflare ? Le cache CDN Cloudflare est le processus consistant à stocker des copies statiques des pages, images et fichiers de script de votre site web sur des serveurs edge situés dans le monde entier. Cette configuration permet de servir les requêtes des utilisateurs depuis le serveur physique le plus proche, réduisant les temps de chargement du site web.
Comment mettre en cache des pages HTML sans divulguer les données des utilisateurs ? Pour mettre en cache le HTML en toute sécurité, configurez une Cache Rule avec une action « Bypass Cache » qui se déclenche lorsque des cookies de session ou d’administration sont présents dans les en-têtes de requête. Cette configuration garantit que les utilisateurs de portail connectés récupèrent toujours le contenu dynamique depuis la base de données d’origine.
Quelle est la différence entre Edge TTL et Browser TTL ? L’Edge TTL (Time-To-Live) détermine combien de temps les serveurs CDN de Cloudflare stockent votre contenu avant de demander une nouvelle copie à votre serveur d’origine. À l’inverse, le Browser TTL détermine combien de temps le cache local du navigateur du visiteur conserve les fichiers.
Pourquoi le cache des chaînes de requête affecte-t-il les performances du site web ? Si les chaînes de requête (comme les balises de suivi UTM) ne sont pas normalisées, le CDN traite chaque variante comme une URL unique, générant des requêtes en double vers votre serveur d’origine. Configurer la normalisation de la clé de cache évite cette duplication d’exploration.
Le cache edge peut-il améliorer mes scores Core Web Vitals ? Oui, servir votre HTML et vos actifs multimédias directement depuis les serveurs edge minimise les temps de Time-to-First-Byte (TTFB) et de Largest Contentful Paint (LCP). Par conséquent, cette stratégie de mise en cache améliore directement votre classement de vitesse de page mobile.
Commentaires