Guide complet Astro sur Cloudflare : configuration SSR et accès Chine ×3 plus rapide

La semaine dernière, j’ai aidé un ami à déployer son blog Astro. Après la mise en ligne sur Cloudflare Pages, j’ai testé depuis l’étranger : pages instantanées, expérience fluide. Ses amis en Chine ont attendu près de 5 secondes — gênant.
Cloudflare annonce plus de 300 datacenters et une bande passante gratuite illimitée. Pourquoi l’accès depuis la Chine est-il si lent ? Beaucoup de développeurs se posent la question. Vous avez sans doute entendu parler d’« IP optimisées », mais comment les configurer, y a-t-il un risque pour le compte, et quel est l’effet réel ?
Cet article couvre le déploiement Astro sur Cloudflare : site statique, configuration SSR, puis optimisation pour l’accès depuis la Chine. J’ai fait pas mal d’erreurs sur le chemin ; voici ce que j’en retiens pour vous faire gagner du temps.
Vous apprendrez :
- Mise en ligne de zéro en environ 20 minutes
- Les trois modes de l’adaptateur SSR, sans confusion
- Trois stratégies d’optimisation pour la Chine, avec une latence jusqu’à ×3 plus basse
C’est parti.
Pourquoi choisir Cloudflare Pages
Cloudflare vs Vercel : hébergement gratuit
On me demande souvent : Vercel ou Cloudflare ? Tout dépend de vos besoins.
Les limites de bande passante frappent tout de suite. Vercel gratuit : 100 Go/mois, puis facturation (40 $ par 100 Go). Un de mes projets a explosé en trafic ; la facture Vercel a fait mal. Cloudflare Pages ? Bande passante illimitée, gratuit — rassurant pour les indépendants.
Performances mondiales : Cloudflare compte plus de 300 datacenters. J’ai testé en Europe, Asie et Amériques : latences basses. Vercel est solide, mais avec moins de nœuds. Audience mondiale → avantage Cloudflare.
Protection DDoS : incluse en gratuit, sans config supplémentaire. Lors d’une attaque, Cloudflare a tout bloqué ; je n’ai même pas ouvert les logs. Vercel protège surtout son réseau en gratuit, moins en profondeur pour votre site.
Côté Vercel : cache de build excellent (2e build ~3-4 min). Pages reconstruit souvent entièrement (10+ min). Intégration Next.js : si vous êtes sur Next.js, Vercel reste le choix naturel.
Mes recommandations :
- Blog Astro statique → Cloudflare Pages
- Trafic imprévisible → Cloudflare Pages
- Utilisateur Next.js avancé → Vercel
- Builds très fréquents → Vercel
Cloudflare Pages vs Workers : évolution 2025
Pages et Workers déploient tous deux Astro — lequel prendre ?
Différence de fond : Workers = calcul serverless en périphérie. Pages = Workers + outillage de build et déploiement (Git, CI). Sous le capot, Pages tourne sur Workers.
En 2025, Cloudflare pousse les nouveaux projets vers Workers pour plus de flexibilité. Pour Astro, ce n’est pas une obligation.
Mon usage :
- Pages : repo GitHub, push → build auto — idéal pour « déployer vite, sans complexité ».
- Workers : Wrangler CLI,
wrangler.jsonc— variables, liaisons KV, etc.
Pour Astro :
- static : Pages + Dashboard GitHub
- server ou hybrid : les deux marchent ; je recommande Pages + Wrangler
Première fois ? Essayez Pages + Git : résultat en quelques minutes. Wrangler peut attendre.
Processus complet de déploiement Astro sur Cloudflare
Déploiement statique : 5 minutes
Blog, doc ou portfolio purement statiques : c’est simple.
Prérequis :
- Projet sur GitHub
- Compte Cloudflare (gratuit)
Étapes :
- Dashboard Cloudflare — dash.cloudflare.com, menu Workers & Pages.
- Nouveau projet — Create application → Pages → Connect to Git.
- Dépôt GitHub — sélectionner le repo Astro ; autoriser l’accès si demandé.
- Build — crucial :
- Framework preset : Astro
- Build command :
npm run build - Build output directory :
dist - Root directory : vide à la racine, sinon chemin du sous-dossier
- Déployer — Save and Deploy ; Cloudflare pull, installe, build, déploie.
Vous obtenez votre-projet.pages.dev. Chaque push sur GitHub relance un build.
Problèmes courants :
- Version Node.js : ajouter
.nvmrcou.node-versionavec18ou20. - 404 : vérifier que la sortie est
dist(ou selonastro.config.mjs). - Timeout : réessayer le déploiement.
Domaine personnalisé (optionnel) : Custom domains → Set up a custom domain → CNAME chez votre DNS (ou auto si le domaine est déjà sur Cloudflare DNS).
Déploiement SSR : adaptateur @astrojs/cloudflare
Quand avez-vous besoin du SSR ?
- Données temps réel (commentaires, stats, login)
- Logique serveur (API, BDD, auth)
- Rendu à la demande (gros volumes non pré-rendus)
Blog Markdown pur ? Le statique suffit.
Étape 1 — Installer l’adaptateur :
npx astro add cloudflare
Cela installe le paquet, met à jour astro.config.mjs et crée wrangler.jsonc.
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
adapter: cloudflare(),
});
Étape 2 — Mode de rendu :
output: 'server'— tout en SSR ; apps data-driven ; chaque requête coûte un rendu.output: 'hybrid'(recommandé) — statique par défaut, SSR page par page ; blog + quelques routes dynamiques.output: 'static'— pas d’adaptateur ; déploiement statique ci-dessus.
Dans ~90 % des cas : hybrid.
export default defineConfig({
output: 'hybrid',
adapter: cloudflare(),
});
Page en SSR :
// src/pages/api/comments.js
export const prerender = false;
export async function GET() {
const comments = await fetchComments();
return new Response(JSON.stringify(comments));
}
Étape 3 — Liaisons Cloudflare (optionnel) — KV, D1, R2 dans wrangler.jsonc :
{
"name": "my-astro-app",
"compatibility_date": "2024-01-01",
"kv_namespaces": [
{
"binding": "MY_KV",
"id": "your-kv-namespace-id"
}
]
}
export const prerender = false;
export async function GET({ locals }) {
const { MY_KV } = locals.runtime.env;
const sessionData = await MY_KV.get('user:123');
return new Response(sessionData);
}
Étape 4 — Dev local :
npm install wrangler --save-dev
npm run build
npx wrangler pages dev ./dist
Étape 5 — Production :
npx wrangler login
npm run build
npx wrangler pages deploy ./dist
Ou Git intégré (liaisons KV parfois à configurer dans le Dashboard).
Erreurs fréquentes :
- Hydration mismatches — désactiver Auto Minify (HTML/CSS/JS) : Dashboard → domaine → Speed → Optimization.
Cannot find module 'MY_KV'— vérifier lebindingdanswrangler.jsonc.- 500 — Logs temps réel : Workers & Pages → projet → Logs.
Variables d’environnement et secrets
Local — fichier .dev.vars (à ignorer dans .gitignore) :
DATABASE_URL=postgres://localhost:5432/mydb
API_KEY=your-secret-key-for-dev
export const prerender = false;
export async function GET({ locals }) {
const apiKey = locals.runtime.env.API_KEY;
}
Production — Dashboard : Settings → Environment Variables (Production / Preview).
Secrets :
npx wrangler secret put API_KEY
Clés API et BDD → Secrets ; config publique → variables classiques.
Optimisation de la vitesse d’accès depuis la Chine
Diagnostic : mesurer la vitesse réelle
Ne optimisez pas avant d’avoir mesuré. Audience surtout hors Chine ? La config Cloudflare par défaut peut suffire.
Outils en ligne :
- 17ce.com — test multi-province / opérateur ; viser < 200 ms en temps de réponse.
- tool.chinaz.com/speedtest — détails de routage.
En local : DevTools → Network → temps du premier chargement.
Repères :
- < 150 ms : très bien
- 150–250 ms : acceptable
-
250 ms ou chargement > 3 s : optimiser
Pourquoi c’est lent ? Anycast + routage ; trafic peut passer par Hong Kong, etc. Les IP/CNAME optimisés visent des nœuds plus directs.
Option 1 : IP optimisées (gratuit, effet maximal)
Latence typique : 280 ms → ~70 ms. Un peu technique ; risques à connaître.
Principe : des centaines d’IP Cloudflare ; certaines sont bien plus rapides depuis la Chine.
Étape 1 — XIU2/CloudflareSpeedTest :
CloudflareST.exe
Exemple de sortie :
IP地址 延迟 下载速度
104.16.160.10 68ms 15.2MB/s
Étape 2 — DNS : le DNS ne doit pas être chez Cloudflare (DNSPod, Alibaba Cloud, etc.). Sinon l’enregistrement A ne change pas le routage Anycast.
Enregistrement A : @ ou www → IP testée, TTL 600.
Étape 3 — revérifier sur 17ce.com.
Risque (janv. 2025) : Cloudflare a durci les conditions sur les abus ; statut des IP optimisées non explicite.
- Blog perso : risque faible
- Site commercial / fort trafic : CNAME public ou résolution par opérateur
- Contrôle tous les 1–2 mois
Dépannage : cache navigateur, nslookup, retester et changer d’IP si dégradation régionale.
Option 2 : CNAME public optimisé (gratuit, plus stable)
Domaines maintenus par la communauté (exemples — à tester avant usage) :
cdn.cloudflare.questcf.xiu2.xyz
Enregistrement CNAME (DNS hors Cloudflare), TTL 600.
403 Forbidden : retirer le DNS du site chez Cloudflare, supprimer le site dans le Dashboard, attendre quelques minutes.
Vérifier avec nslookup puis 17ce.com.
Bon compromis si vous voulez de l’accélération sans mesurer les IP vous-même.
Option 3 : résolution par opérateur (DNS payant, meilleur résultat)
IPs différentes selon opérateur / région ; défaut pour l’international vers your-project.pages.dev.
Fournisseurs : DNSPod, Alibaba Cloud DNS (Cloudflare DNS ne gère pas le routage par opérateur chinois).
-
Tester par opérateur avec CloudflareSpeedTest (Telecom, Unicom, Mobile), ou plages courantes (à valider par vos propres tests) :
- Telecom : 104.16.160.0/24
- Unicom : 104.23.240.0/24
- Mobile : 172.64.32.0/24
-
DNSPod — plusieurs enregistrements avec « type de ligne » différent :
Enregistrement 1 : - Hôte : @ - Type : A - Ligne : Telecom - Valeur : 104.16.160.10 Enregistrement 2 : - Hôte : @ - Type : A - Ligne : Unicom - Valeur : 104.23.240.5 Enregistrement 3 : - Hôte : @ - Type : A - Ligne : Mobile - Valeur : 172.64.32.8 Enregistrement 4 (défaut, international) : - Hôte : @ - Type : CNAME - Ligne : Défaut - Valeur : your-project.pages.dev -
Enregistrer et attendre la propagation.
Résultat : chaque opérateur chinois vers un nœud rapide ; l’international vers Cloudflare natif.
Coût : DNSPod perso gratuit (basique) ; pro ~20 ¥/mois ; Alibaba selon requêtes.
Pour > 10 000 visites/mois, l’investissement vaut souvent le coup.
Comparaison et surveillance
| Option | Latence moy. | TTFB | Chargement | Coût |
|---|---|---|---|---|
| Par défaut | 280 ms | 1,8 s | 3,2 s | Gratuit |
| IP optimisées | 75 ms | 0,5 s | 1,1 s | Gratuit |
| CNAME public | 120 ms | 0,7 s | 1,5 s | Gratuit |
| Par opérateur | 65 ms | 0,4 s | 0,9 s | ~20 ¥/mois |
Gain typique ×3 à ×5.
Surveillance : UptimeRobot, Analytics Cloudflare, Better Uptime. Rappel 1–2 mois : 17ce.com, si > 200 ms relancer CloudflareSpeedTest et mettre à jour le DNS.
Conclusion
Déploiement : Pages + Git pour le statique ; npx astro add cloudflare et hybrid ou server pour le SSR.
SSR : hybrid dans la majorité des cas ; liaisons dans wrangler.jsonc ; .dev.vars en local, Dashboard en prod ; couper Auto Minify si erreur d’hydratation.
Chine : IP optimisées (gratuit, maintenance) ; CNAME public (pratique) ; résolution par opérateur (meilleur, petit coût).
Recommandations : blog perso → 1 ou 2 ; trafic élevé → 3 ; commercial → prudence sur les IP optimisées.
Actions : compte Cloudflare, test 17ce.com, rappel de vérification des IP.
Suite : Workers KV, D1, R2, Pages Functions — à explorer avec Astro.
Si cet article vous a aidé, partagez votre expérience en commentaires.
Guide complet de déploiement Astro sur Cloudflare : de zéro à la mise en ligne
20 minutes de zéro à la production, configuration des trois modes SSR, trois stratégies d'optimisation pour la Chine avec latence jusqu'à ×3 plus basse
⏱️ Estimated time: 20 min
- 1
Step 1: Pourquoi Cloudflare Pages ? Comparaison des plateformes
Avantages Cloudflare Pages :
• Bande passante illimitée gratuite (Vercel gratuit : 100 Go/mois, puis 40 $ par 100 Go supplémentaires)
• Plus de 300 datacenters dans le monde
• Protection DDoS incluse dans l'offre gratuite
Avantages Vercel :
• Excellent cache de build (2e build souvent 3-4 min)
• Intégration profonde Next.js
Recommandations :
• Blog Astro statique → Cloudflare Pages
• Trafic imprévisible → Cloudflare Pages
• Utilisateur Next.js avancé → Vercel
• Itérations et builds fréquents → Vercel - 2
Step 2: Déploiement site statique : prise en main en 5 minutes
Pour un projet Astro purement statique (blog, doc, portfolio), le déploiement est très simple.
Étapes :
1. Connexion au Dashboard Cloudflare, Workers & Pages, Create application
2. Connect to Git, autoriser GitHub ou GitLab
3. Choisir le dépôt du blog
4. Project name et Production branch
5. Build command (souvent npm run build) et Build output directory (souvent dist)
6. Save and Deploy
Après déploiement :
• Lien .pages.dev fourni
• Vérifier l'affichage des pages
Dépannage :
• Page blanche → logs de build, répertoire de sortie
• Échec de build → commande et dépendances
• Styles manquants → chemins des ressources - 3
Step 3: Configuration SSR : trois modes de l'adaptateur
Trois modes :
1. Statique pur (output: 'static')
• Pages + GitHub via le Dashboard — le plus simple
• Blogs, documentation, portfolios
2. Mode SSR (output: 'server')
• Pages + Wrangler CLI
• Contenu dynamique rendu côté serveur
3. Mode hybride (output: 'hybrid')
• Pages statiques en SSG, pages dynamiques en SSR
• SSR et SSG dans un même projet
• Pages statiques 95+ Lighthouse, pages dynamiques personnalisées
Configuration :
1. npx astro add cloudflare
2. astro.config.mjs (output: 'server' ou 'hybrid' + adaptateur)
3. Déploiement Pages (Git ou Wrangler CLI) - 4
Step 4: Optimisation accès Chine : trois approches testées (latence jusqu'à ×3)
Option 1 — IP optimisées (meilleur effet, maintenance régulière)
• CloudflareSpeedTest pour trouver la meilleure IP
• Enregistrement A DNS vers l'IP optimisée
• Latence typique : 5 s → 1,5 s
• Vérifier périodiquement (les IP expirent)
Option 2 — CNAME public (gratuit, effet moyen)
• Service CNAME public
• Peu de maintenance
Option 3 — Résolution par opérateur (coût faible, effet maximal)
• Chine et international couverts
• Pour trafic élevé et exigence UX
Recommandations :
• Blog perso → option 1 ou 2
• Trafic important → option 3
• Projet commercial → prudence avec IP optimisées, privilégier option 3 - 5
Step 5: Écosystème Cloudflare et poursuite d'apprentissage
Intégrations :
• Workers KV : cache, sessions
• D1 : SQLite en périphérie
• R2 : stockage objet (type S3)
• Pages Functions : fonctions serverless
Prochaines étapes :
1. Créer un compte Cloudflare, tester le déploiement statique
2. Si accès Chine lent : mesurer sur 17ce.com avant d'optimiser
3. Rappel pour vérifier périodiquement la validité des IP
FAQ
Pourquoi Cloudflare Pages ? Quelle différence avec Vercel ?
• Bande passante illimitée gratuite (Vercel : 100 Go/mois puis 40 $/100 Go — j'ai déjà reçu une facture après un pic de trafic ; Cloudflare : illimité et gratuit)
• Plus de 300 datacenters (tests Europe, Asie, Amériques : latence basse ; Vercel : moins de nœuds si audience mondiale)
• Protection DDoS gratuite (attaque bloquée automatiquement sans que je consulte les logs)
Vercel :
• Cache de build performant (2e build 3-4 min ; Pages reconstruit souvent 10+ min)
• Intégration Next.js profonde
Recommandations : blog Astro statique et trafic imprévisible → Cloudflare ; utilisateur Next.js → Vercel ; builds fréquents → Vercel.
Comment déployer Astro sur Cloudflare Pages ?
1) Dashboard → Workers & Pages → Create application
2) Connect to Git, autoriser GitHub/GitLab
3) Choisir le dépôt
4) Project name, Production branch
5) Build command (npm run build), output directory (dist)
6) Save and Deploy
Lien .pages.dev fourni. En cas de page blanche, échec de build ou styles manquants : logs, répertoire de sortie, chemins des ressources.
Comment configurer le SSR Astro ? Quels sont les trois modes ?
2) server : Pages + Wrangler — rendu dynamique.
3) hybrid : SSG pour le statique, SSR pour le dynamique — flexibilité et performances.
Étapes : npx astro add cloudflare ; astro.config.mjs (output server ou hybrid) ; déploiement Git ou Wrangler.
Comment optimiser la vitesse depuis la Chine ?
Option 2 CNAME public : simple, effet moyen.
Option 3 résolution par opérateur : meilleur résultat, petit coût.
Recommandations : blog perso → 1 ou 2 ; trafic élevé → 3 ; commercial → prudence sur IP optimisées.
Actions : compte Cloudflare, test 17ce.com, rappel de vérification des IP.
Cloudflare Pages et Workers : lequel choisir ?
En 2025, Cloudflare oriente les nouveaux projets vers Workers pour plus de contrôle ; pour Astro, Pages reste très pratique.
Pages : GitHub, push → build auto — déploiement rapide.
Workers : Wrangler CLI, wrangler.jsonc — variables, KV, etc.
Astro : static → Pages + Dashboard ; server/hybrid → Pages + Wrangler recommandé. Première fois : essayer Pages + Git.
Quelles autres fonctions de l'écosystème Cloudflare intégrer ?
8 min de lecture · Publié le: 3 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
Quota Workers gratuit insuffisant ? 7 astuces pour tenir un mois avec 100 000 requêtes
Les 100 000 requêtes/jour gratuites de Cloudflare Workers ne suffisent pas ? Règles de facturation décryptées et 7 astuces concrètes. Cas réel : hébergeur d'images de 120 000 à 30 000 req/j, cache +80 %, 60 $ économisés par an.
Partie 17 sur 23
Suivant
Cloudflare Workers KV en pratique : stockage clé-valeur distribué de A à Z
Analyse approfondie de l'architecture Cloudflare Workers KV, techniques d'optimisation des performances et code pratique. Implémentations complètes Session Storage et API Cache, plus guide de choix KV vs D1 vs R2.
Partie 19 sur 23



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire