Taux de cache Cloudflare bloqué à 30 % ? 3 règles pour viser 90 %

Le taux de cache Cloudflare de mon blog tournait autour de 30 %. Images, CSS en cache — mais le HTML repassait toujours par l’origine, serveur saturé. Par défaut Cloudflare ne met pas le HTML en cache ; les Page Rules sont dépréciées.
Après Cache Rules et Edge TTL : hits ~30 % → ~90 %, TTFB ~500 ms → ~100 ms, charge origine −90 %. Cet article explique pourquoi le HTML n’est pas mis en cache, comment configurer les règles et comment vérifier.
Pourquoi Cloudflare ne met pas le HTML en cache par défaut ?
Comportement de cache par défaut
Par défaut, Cloudflare ne met en cache que les statiques — images (JPG, PNG, GIF), CSS, JS. Le HTML ? Non, pas par défaut.
Trois critères principaux :
- En-tête Cache-Control :
private,no-store,no-cacheoumax-age=0→ pas de cache - Code de réponse : certains codes seulement (200, 301, 404, etc.)
- Méthode : GET en cache ; pas POST, PUT, etc.
Le HTML est souvent traité comme dynamique (données utilisateur). Avec connexion, noms et infos perso ne doivent pas être servis par le CDN à d’autres visiteurs.
La vraie raison : la sécurité
J’ai vu sur un forum : cache site entier activé sans réfléchir — wp-login.php mis en cache avec identifiants. N’importe qui pouvait entrer dans l’admin WordPress. Flippant.
Si le site est surtout statique :
- Blog statique (Next.js, Gatsby, etc.)
- Site vitrine ou doc peu mis à jour
- Pages produit purement affichage
… le cache HTML booste les perfs — à condition d’exclure admin, login, etc.
Quel gain pour le HTML ?
Sur Medium : TTFB 500 ms → 100–160 ms, charge −90 %. Avant : chaque visiteur = origine + BDD + rendu. Après : CDN sert le HTML ; l’origine reste au repos. Plus de trafic, plus visible.
Page Rules dépréciées : passer aux Cache Rules
Fin des Page Rules
Page Rules permettait Cache Everything pour le HTML. Elles sont deprecated.
Chronologie :
- Juillet 2024 : nouveaux comptes gratuits sans Page Rules
- 2025 : migration automatique vers le nouveau système
- Nouvelles configs : Cache Rules uniquement
Page Rules : vieilles, peu flexibles, 3 règles max en gratuit.
Cache Rules
Ère Page Rules : choisir manuellement Cache Everything
Ère Cache Rules : Eligible for cache active l’équivalent
J’ai cherché Cache Everything longtemps — renommé.
Matching plus souple : chemin URI, extension, hostname, regex, conditions combinées.
Migration
- Migration auto en 2025 (possible de migrer avant)
- Disable Security / Disable Performance : non migrés
- Eligible for cache ≈ Cache Everything, implémentation un peu différente
Passez à Cache Rules maintenant — plus clair et plus puissant.
Cache Rules en pratique : 3 règles pour tout le site
Préparation
Console Cloudflare → domaine → Caching → Cache Rules → Create rule.
Règle 1 : bypass admin (priorité max)
Pourquoi en premier ? Sécurité : admin et login jamais en cache.
- Rule name :
Bypass Admin Pages - When incoming requests match :
- Custom filter expression
- Field : URI Path
- Operator : contains
- Value :
/wp-admin
- Or :
/wp-login.php,/admin/,/api/auth/ - Then : Bypass cache
- Priorité : 1
Deploy. Liste WordPress type :
/wp-admin
/wp-login.php
/wp-json
/cart
/checkout
/my-account
Adaptez à votre site.
Règle 2 : statiques (priorité moyenne)
Optionnel (Cloudflare cache déjà les statiques) mais TTL plus précis.
- Rule name :
Cache Static Assets - When : File extension, is in :
jpg png gif css js woff woff2 ttf svg ico - Then : Eligible for cache ; Edge TTL : Use cache-control header if present, use default Cloudflare caching behavior if not
- Priorité : 2
Règle 3 : tout le reste (priorité basse)
Cache du HTML et du reste.
- Rule name :
Cache Everything Else - When : All incoming requests (ou expression custom)
- Then : Eligible for cache ; Edge TTL : Ignore cache-control header and use this TTL — 7 days
- Priorité : 3
Pourquoi 1 semaine ? Compromis blog/doc. Gratuit : TTL min 2 h ; Pro 1 h.
Ordre d’exécution
Priorité 1 → 2 → 3 : admin bypass, statiques TTL adapté, reste en cache 1 semaine.
Checklist
- Règle 1 priorité la plus haute (nombre le plus petit)
- Tous les chemins admin exclus
- TTL règle 3 selon fréquence de mise à jour
- Toutes les règles Deploy
Edge TTL : éviter les pièges
Trois modes
Mode 1 : Use cache-control header if present, bypass cache if not — strict ; sans Cache-Control à l’origine = pas de cache.
Mode 2 (souvent recommandé hors HTML forcé) : Use cache-control header if present, use default Cloudflare caching behavior if not — équilibré.
Mode 3 : Ignore cache-control header and use this TTL — force le TTL. Recommandé pour le HTML si no-cache ou absence de Cache-Control.
Durée du TTL
| Type de contenu | TTL conseillé | Raison |
|---|---|---|
| Statiques (images, CSS, JS) | 1 mois | Peu de changements |
| HTML article blog | 1 semaine | Bon compromis |
| HTML page produit | 1–3 jours | Prix/stock |
| HTML accueil | 1 jour | Mises à jour fréquentes |
| API | Pas de cache ou 5 min | Fraîcheur des données |
Gratuit : minimum 2 h.
Erreurs fréquentes
Oublier l’exclusion admin — admin WordPress en cache, pages obsolètes → règle Bypass en priorité 1.
TTL trop long — titre modifié, visiteurs voient l’ancien → TTL selon rythme de publication.
Confondre Edge TTL et Browser TTL — Edge = nœuds CDN ; Browser = navigateur visiteur. Régler Browser TTL (Respect origin ou ~1 jour).
Purge Cache
Caching → Purge Cache : Purge Everything ou Custom Purge. Plugin Cloudflare sur WordPress pour purge à la publication.
Vérification et optimisation
Méthode 1 : DevTools
F12 → Network → page d’accueil → document HTML → Headers.
cf-cache-status : HIT, MISS, DYNAMIC, BYPASS, EXPIRED.
age : durée en cache sur le CDN (secondes).
cache-control : stratégie origine (Cloudflare peut l’ignorer en mode 3).
Méthode 2 : curl
curl -I https://your-website.com
curl -svo /dev/null https://your-website.com 2>&1 | grep -i "cf-cache"
Méthode 3 : Analytics
Analytics → Caching → Cache Hit Ratio. Cible > 80 %.
Astuces avancées
- Préchauffer après publication
- URLs uniformes (
/pagevs/page/vs?) - Query strings : Query String Sort ou Transform Rules
Dépannage
DYNAMIC permanent : Cache-Control bloquant ou règle non matchée → vérifier Cache Rules, mode 3 pour HTML.
Hits 50–60 % : paramètres URL, headers origine, délai de remplissage CDN → Analytics par type de requête.
Ancien contenu après mise à jour : TTL long ou cache navigateur → Purge ou plugin.
Synthèse
- Pourquoi pas de HTML par défaut : sécurité, contenu dynamique
- Page Rules → Cache Rules : Eligible for cache = ancien Cache Everything
- 3 règles : bypass admin (1), statiques (2), reste HTML 1 semaine (3)
- Edge TTL mode 3 pour HTML si besoin
- Vérifier :
cf-cache-status, Analytics > 80 %
Chez moi : 30 % → 90 % hits, TTFB ~500 ms → ~100 ms, charge −90 %.
À faire :
- Regarder le Cache Hit Ratio actuel dans Analytics
- Configurer les 3 Cache Rules (admin en bypass d’abord !)
- Recontrôler après 1–2 jours
Vérifiez : bypass admin, priorités, mode Edge TTL. WordPress : plugin Cloudflare officiel recommandé.
Questions ou retours d’expérience : partagez en commentaires !
Configurer les Cache Rules Cloudflare pour monter le taux de cache
De la compréhension du HTML non mis en cache par défaut aux 3 Cache Rules, pour passer d’environ 30 % à 90 % de hits
Estimated time: PT1H
-
1
Step 1: Comprendre le cache par défaut et pourquoi le HTML n’est pas mis en cache
Par défaut Cloudflare met en cache surtout JPG, PNG, GIF, CSS, JS — pas le HTML. -
2
Step 2: HTML = contenu souvent dynamique ; avec login, pas de cache CDN pour les données perso. Sites statiques (Next.js, Gatsby, vitrine, doc)
cache HTML utile si exclusions correctes. -
3
Step 3: Passer de Page Rules aux Cache Rules
Page Rules dépréciées : -
4
Step 4: • Juillet 2024
plus pour nouveaux comptes gratuits -
5
Step 5: • 2025
migration automatique -
6
Step 6: • Nouvelles configs
Cache Rules -
7
Step 7: Atouts
matching flexible (URI, extension, hostname, regex). -
8
Step 8: Configurer la règle 1 : bypass admin (priorité max)
Sécurité : admin et login jamais en cache. -
9
Step 9: Rule name
Bypass Admin Pages -
10
Step 10: When
Custom filter expression, URI Path contains /wp-admin -
11
Step 11: Or
/wp-login.php, /admin/, /api/auth/ -
12
Step 12: Then
Bypass cache -
13
Step 13: Liste WordPress type
/wp-admin, /wp-login.php, /wp-json, /cart, /checkout, /my-account — à adapter. -
14
Step 14: Configurer la règle 2 : statiques (priorité moyenne)
Optionnel mais TTL plus précis. -
15
Step 15: File extension is in
jpg png gif css js woff woff2 ttf svg ico -
16
Step 16: Configurer la règle 3 : tout le reste (priorité basse)
Cache HTML et reste. -
17
Step 17: 1 semaine
bon pour blog/doc. Gratuit TTL min 2 h. Ordre - 1 → 2 → 3. -
18
Step 18: Vérifier et optimiser
DevTools : Network → HTML → cf-cache-status (HIT/MISS/DYNAMIC/BYPASS/EXPIRED). 1re MISS, 2e HIT souvent. -
19
Step 19: Analytics
Cache Hit Ratio — cible > 80 %. -
20
Step 20: Astuces
préchauffer, URLs uniformes, Transform Rules pour query strings.
FAQ
Pourquoi Cloudflare ne met pas le HTML en cache par défaut ? Quel gain en le mettant en cache ?
Le HTML est souvent vu comme du contenu dynamique, pouvant contenir des infos utilisateur — donc pas mis en cache. C'est cohérent : avec connexion, le HTML peut afficher nom d'utilisateur, données perso ; le CDN ne doit pas les servir à d'autres visiteurs.
Exemple forum : quelqu'un a activé le cache site entier ; wp-login.php a été mis en cache avec identifiants. Conséquence : n'importe quel visiteur pouvait accéder à l'admin WordPress via la page en cache.
Gains observés :
Sur Medium, après cache HTML : TTFB 500 ms → 100–160 ms, charge serveur −90 %. Avant, chaque visiteur tirait le HTML à l'origine (requête, BDD, rendu). Maintenant le CDN sert le HTML en cache ; l'origine ne bouge plus. Plus le trafic est fort, plus l'écart est visible.
Mon cas : hits 30 % → 90 %, TTFB ~500 ms → ~100 ms, charge −90 %.
Différence entre Page Rules et Cache Rules ? Comment migrer ?
• Depuis juillet 2024, les nouveaux comptes gratuits n'y ont plus accès
• En 2025, Cloudflare migre automatiquement les Page Rules existantes
• Toute nouvelle config passe par Cache Rules
Pourquoi ? Page Rules vieillissantes, peu flexibles, 3 règles max en gratuit — insuffisant pour des stratégies complexes.
Atouts Cache Rules :
• Plus puissantes
• Critères flexibles (chemin URI, extension, hostname, regex, combinaisons)
Différence majeure :
• Page Rules : il fallait choisir manuellement Cache Everything
• Cache Rules : Eligible for cache active l'équivalent de Cache Everything
J'ai cherché Cache Everything au début — l'option a été renommée.
Migration :
• Cloudflare migre en 2025 (automatique)
• Disable Security et Disable Performance ne migrent pas
• Eligible for cache ≈ Cache Everything, logique légèrement différente
Conseil : passer à Cache Rules maintenant.
Comment configurer 3 Cache Rules pour le cache site ? Ordre d'exécution ?
• Nom : Bypass Admin Pages
• When : Custom filter expression
• Field URI Path, Operator contains, Value /wp-admin
• Ajouter /wp-login.php, /admin/, /api/auth/, etc.
• Then : Bypass cache
• Priorité 1
Règle 2 — statiques :
• Nom : Cache Static Assets
• When : File extension, is in : jpg png gif css js woff woff2 ttf svg ico
• Then : Eligible for cache
• Edge TTL : Use cache-control header if present, use default Cloudflare caching behavior if not
• Priorité 2
Règle 3 — tout le reste :
• Nom : Cache Everything Else
• When : All incoming requests
• Then : Eligible for cache
• Edge TTL : Ignore cache-control header and use this TTL — 7 days
• Priorité 3
Ordre : priorité croissante (1 puis 2 puis 3). Admin jamais en cache, statiques avec TTL adapté, HTML forcé 1 semaine.
Les 3 modes Edge TTL : différences et choix ?
• S'il y a Cache-Control, on suit ; sinon pas de cache
• Pour origine déjà bien configurée
• Trop strict si l'origine n'envoie rien
Mode 2 : Use cache-control header if present, use default Cloudflare caching behavior if not
• Cache-Control respecté, sinon règles Cloudflare par défaut
• Bon compromis pour la plupart des sites
Mode 3 : Ignore cache-control header and use this TTL
• Force le TTL choisi
• Sites statiques ou stratégie maîtrisée
• Recommandé pour le HTML (souvent sans Cache-Control ou no-cache)
TTL indicatif :
• Statiques : ~1 mois
• Articles blog HTML : ~1 semaine
• Pages produit : 1–3 jours
• Accueil : ~1 jour
• API : pas de cache ou 5 min
Gratuit : TTL minimum 2 h.
Comment vérifier que le cache fonctionne ? Améliorer le taux de hits ?
1. Chrome, F12, onglet Network
2. Ouvrir la page d'accueil
3. Cliquer le document HTML, onglet Headers
cf-cache-status :
• HIT : servi depuis le CDN
• MISS : origine cette fois, puis mis en cache
• DYNAMIC : non mis en cache
• BYPASS : bypass (souvent admin)
• EXPIRED : expiré, re-fetch origine
1re visite souvent MISS, 2e HIT. DYNAMIC/BYPASS permanent = config à revoir.
curl -I https://your-website.com — chercher cf-cache-status.
Analytics Cloudflare : Caching → Cache Hit Ratio. Avant 30 %, lendemain ~85 %, puis ~90 %.
Cibles : hits > 80 %, bande passante en baisse, requêtes CDN en hausse / origine en baisse.
Astuces : préchauffer le cache après publication, URLs uniformes, retirer les query strings inutiles (Transform Rules).
Contenu mis à jour après mise en cache ? Purge manuelle ?
1. Console Cloudflare → Caching
2. Purge Cache
3. Purge Everything ou Custom Purge (URLs précises)
Je préfère Custom Purge. Purge Everything = pic de requêtes vers l'origine.
Astuce WordPress : plugin Cloudflare pour purge auto à la publication.
TTL trop long : titre d'article modifié, visiteurs voient l'ancien — penser au cache.
Solutions : TTL selon fréquence de mise à jour, purge après publication, plugins d'automatisation.
Edge TTL vs Browser TTL :
• Edge TTL : durée sur les nœuds CDN Cloudflare
• Browser TTL : durée dans le navigateur du visiteur
Sans Browser TTL, le navigateur redemande souvent au CDN. Régler Respect origin ou ~1 jour pour Browser TTL.
7 min de lecture · Publié le: 1 déc. 2025 · Mis à jour le: 27 juil. 2026
Cloudflare Full Stack
Si vous arrivez depuis la recherche, le plus rapide est de passer à l’article précédent ou suivant de cette série.
Précédent
Échec de build CF Pages ? 8 problèmes courants et leurs solutions pour gagner une demi-journée de debug
Guide systématique des 8 scénarios les plus fréquents d'échec de build Cloudflare Pages : installation des dépendances, version Node, timeout, résolution de modules, avec solutions éprouvées et mesures préventives pour localiser rapidement le problème.
Partie 4 sur 23
Suivant
Règles pare-feu Cloudflare pour débutants : 5 règles gratuites pour filtrer 80 % du trafic malveillant (modèles inclus)
L'offre gratuite Cloudflare n'offre que 5 règles pare-feu ? Ce guide propose des modèles WAF éprouvés (IP, ASN, UA, chemins), la configuration des priorités pas à pas, et 30 minutes pour filtrer 80 % du trafic malveillant, avec expressions complètes
Partie 6 sur 23



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire