Analyser la rentabilité des CDN : comparatif pour développeurs
Pour comparer les coûts de CDN, commencez par les octets et les requêtes mensuels, puis vérifiez quelles formules peuvent diffuser votre contenu. Pour la charge de site web ci-dessous, le sous-total de diffusion facturé à l’usage de CloudFront s’élève à 71,28 $, tandis que sa formule forfaitaire Pro coûte 15 $. Cet écart montre qu’il est aussi important de comparer des offres précises que de comparer des fournisseurs.
Définir une charge de travail mensuelle
Il s’agit d’un exemple budgétaire construit, et non d’une facture client ni d’un benchmark de performances. Il modélise un site web public qui sert du HTML, du CSS, du JavaScript et quelques images d’appoint modestes, sans vidéo, téléchargements de gros fichiers, envois de fichiers ni transformations d’images.
| Donnée mensuelle | Amérique du Nord, diffusée aux États-Unis | Europe | Total |
|---|---|---|---|
| Octets de réponse aux visiteurs, après compression et en-têtes HTTP inclus | 1 200 000 000 000 | 800 000 000 000 | 2 000 000 000 000 |
| Requêtes HTTPS GET réussies | 3 millions | 2 millions | 5 millions |
Nous supposons un domaine et une distribution ou un service, un mois de facturation complet, des quotas gratuits inutilisés et aucun autre usage sur le compte. La répartition régionale est ici de 60/40 pour les deux mesures ; collectez séparément les octets et les requêtes à partir de vos propres journaux. Associez le trafic aux régions de facturation de chaque fournisseur, plutôt que de supposer que le pays d’un visiteur identifie toujours le lieu de diffusion.
Tous les prix et quotas ci-dessous ont été vérifiés le 22 septembre 2026. Les montants sont exprimés en USD hors taxes, selon les tarifs publics, sans remise négociée ni crédit promotionnel. La comparaison exclut l’hébergement de l’origine, le stockage, les requêtes et le transfert d’origine, le calcul en périphérie facultatif, les transformations, les destinations de journaux ainsi que la sécurité ou le support payants supplémentaires. Les fonctionnalités incluses dans les offres restent incluses ; ces offres ne proposent pas des ensembles de fonctionnalités identiques.
Comparer les offres CDN réelles
| Offre | Base publiée pour cette charge | Estimation mensuelle de diffusion ou prix affiché de la formule |
|---|---|---|
| Cloudflare Free / Pro pour sites web | Free inclut le CDN ; Pro coûte 25 $ en facturation mensuelle, ou 20 $/mois en facturation annuelle. Nous retenons ici la facturation mensuelle. | 0 $ / 25 $, sous réserve de l’éligibilité du contenu |
| CloudFront facturé à l’usage | 1 TB de transfert et 10 millions de requêtes HTTP/S gratuits chaque mois ; la tranche de transfert suivante est à 0,085 $ par GB AWS dans les deux régions sélectionnées. | 71,28 $ pour la diffusion aux visiteurs |
| CloudFront Pro forfaitaire | 15 $ par distribution et par mois ; 50 TB et 10 millions de requêtes inclus. | 15 $, si ses fonctionnalités conviennent |
| Fastly Full Site Delivery, tarification à l’usage actuelle | Tranches régionales : les premiers 100 GB et 1 million de requêtes sont gratuits ; ensuite 0,12 $/GB en Amérique du Nord et en Europe, plus 0,01 $ par tranche de 10 000 requêtes. | 219 $ pour la diffusion aux visiteurs |
| Forfait Basic de Fastly Network Services | Affiché à 1 500 $/mois avec 100 millions de requêtes et le support Standard. | 1 500 $ affichés ; conditions contractuelles à obtenir |
Cloudflare Free est une option réelle si ses fonctionnalités suffisent ; il n’est pas nécessaire d’acheter Pro simplement pour utiliser son CDN. La formule forfaitaire à 0 $ de CloudFront propose des quotas plus faibles, 100 GB et 1 million de requêtes, que cette charge dépasse. Son niveau gratuit à l’usage est une offre distincte, et non un quota supplémentaire à cumuler avec Pro. AWS présente séparément les niveaux forfaitaires.
Les lignes facturées à l’usage supposent l’absence d’engagement de durée. Les formules forfaitaires CloudFront n’exigent pas d’engagement annuel. L’engagement du forfait Fastly, les conditions de bande passante et le traitement des dépassements nécessitent un devis ; un prix mensuel affiché ne fixe pas ces conditions. Sa grille tarifaire actuelle renvoie aussi vers une ancienne tarification distincte pour les comptes en ligne créés avant le 4 novembre 2025.
Vérifier l’éligibilité et les fonctionnalités requises
Les formules Cloudflare pour sites web ne constituent pas un quota général pour la diffusion de médias. Les conditions CDN de Cloudflare exigent des services payants appropriés pour la vidéo et les autres gros fichiers en dehors d’Enterprise, et autorisent des limites en cas de diffusion disproportionnée d’images, d’audio ou de gros fichiers. Chiffrez séparément un service vidéo ou image si cela correspond à votre charge.
Les restrictions des forfaits de Fastly ciblent les pages web et les API, excluent le streaming et limitent à 10 % le trafic provenant des régions de facturation Afrique, Inde ou Corée du Sud. Notre exemple États-Unis/Europe évite cette contrainte régionale, mais il n’établit pas l’éligibilité au regard de chaque condition du forfait.
Le quota de transfert de CloudFront Pro convient à cet exemple, mais les politiques de cache personnalisées et un SLA de disponibilité ne sont proposés qu’à partir de la formule Business. Un site qui a besoin de ces fonctionnalités doit reconsidérer la ligne à 15 $. Les formules forfaitaires couvrent une distribution et jusqu’à un domaine apex ; un dépassement substantiel et prolongé peut entraîner des ajustements de diffusion, même en l’absence de frais de dépassement. Consultez les règles relatives aux fonctionnalités et aux quotas, y compris l’éligibilité liée à l’usage historique. AWS exige également un compte éligible plutôt qu’un compte Free Tier.
Avant de considérer deux prix comme des alternatives, notez vos exigences en matière de contrôle du cache, de règles WAF, de protection contre les bots, de conservation des journaux, de délai de réponse du support et d’engagement de disponibilité. Un faible sous-total de diffusion ne chiffre pas les exigences manquantes.
Reproduire le calcul de diffusion
Conservez le nombre d’octets d’origine lorsque vous comparez les unités. Fastly utilise des GB décimaux, cette charge représente donc 2 000 GB. AWS décrit le transfert CloudFront en GB binaires, que nous notons ici GiB : les mêmes octets représentent environ 1 862,645149 GiB, avec un quota gratuit de 1 024 GiB. Consultez les mesures de facturation de Fastly et l’explication des unités par AWS, en portugais.
Pour CloudFront, soustrayez le quota une seule fois pour l’ensemble du compte :
max(0, 2,000,000,000,000 / 1,073,741,824 − 1,024) × $0.085 = $71.28.
Les deux régions ont le même tarif de transfert à ce volume, la répartition entre elles ne modifie
donc pas ce résultat. Les cinq millions de requêtes tiennent toutes dans le quota de requêtes
distinct.
Pour Fastly, appliquez une fois par région de facturation les tranches gratuites régionales publiées :
| Composant | Calcul | USD |
|---|---|---|
| Transfert Amérique du Nord | (1 200 − 100) GB × 0,12 $ | 132,00 |
| Transfert Europe | (800 − 100) GB × 0,12 $ | 84,00 |
| Requêtes Amérique du Nord | (3 000 000 − 1 000 000) / 10 000 × 0,01 $ | 2,00 |
| Requêtes Europe | (2 000 000 − 1 000 000) / 10 000 × 0,01 $ | 1,00 |
| Sous-total de diffusion aux visiteurs | 132 + 84 + 2 + 1 | 219,00 |
Le calculateur hors ligne suivant reproduit ces deux sous-totaux. Il n’accepte délibérément que l’Amérique du Nord et l’Europe, au plus 10 TB décimaux au total pour les deux régions, et au plus 10 millions de requêtes au total. Ces limites le maintiennent dans les tranches de transfert ci-dessus et dans le quota de requêtes gratuit de CloudFront. Des charges plus importantes nécessitent davantage de tranches tarifaires, et non la suppression de ce garde-fou.
Enregistrez-le dans un nouveau fichier nommé cdn-cost.ts. Il nécessite Node.js
avec prise en charge native de TypeScript et aucun paquet ; l’exemple a été testé avec Node.js
26.8.1 sous Linux. Il affiche des estimations, n’effectue aucune requête réseau et n’écrit aucun
fichier de sortie : le relancer laisse donc les fichiers existants intacts.
interface Usage {
bytes: number
requests: number
}
const workload: Record<'northAmerica' | 'europe', Usage> = {
northAmerica: { bytes: 1_200_000_000_000, requests: 3_000_000 },
europe: { bytes: 800_000_000_000, requests: 2_000_000 },
}
function estimate(traffic: typeof workload): Record<string, number> {
if (Object.keys(traffic).some((region) => region !== 'northAmerica' && region !== 'europe')) {
throw new Error('Only North America and Europe are priced')
}
const regions = [traffic.northAmerica, traffic.europe]
for (const region of regions) {
for (const value of [region.bytes, region.requests]) {
if (!Number.isSafeInteger(value) || value < 0) {
throw new Error('Use nonnegative whole bytes and request counts')
}
}
}
const bytes = regions.reduce((sum, region) => sum + region.bytes, 0)
const requests = regions.reduce((sum, region) => sum + region.requests, 0)
if (bytes > 10_000_000_000_000 || requests > 10_000_000) {
throw new Error('This example stops at 10 TB and 10 million requests')
}
const fastlyBandwidth = regions.reduce(
(sum, region) => sum + Math.max(0, region.bytes / 1_000_000_000 - 100) * 0.12,
0,
)
const fastlyRequests = regions.reduce(
(sum, region) => sum + (Math.max(0, region.requests - 1_000_000) / 10_000) * 0.01,
0,
)
return {
cloudFrontPayg: Math.max(0, bytes / 2 ** 30 - 1_024) * 0.085,
fastlyBandwidth,
fastlyRequests,
fastlyDelivery: fastlyBandwidth + fastlyRequests,
}
}
for (const [name, cost] of Object.entries(estimate(workload))) {
console.log(`${name}: USD ${cost.toFixed(2)}`)
}
Exécutez-le depuis le répertoire contenant le fichier :
node cdn-cost.ts
Sortie attendue :
cloudFrontPayg: USD 71.28
fastlyBandwidth: USD 216.00
fastlyRequests: USD 3.00
fastlyDelivery: USD 219.00
Modifiez les deux totaux régionaux pour examiner un autre mois dans les limites indiquées. Par exemple, 100 GB et un million de requêtes dans chaque région donnent un sous-total d’usage nul pour les deux fournisseurs. Si ce même trafic est concentré dans une seule région, le sous-total de Fastly passe à 13 $, car seules les tranches gratuites d’une région s’appliquent. Il s’agit de vérifications arithmétiques de ce modèle de grille tarifaire, et non de factures vérifiées.
Fastly facture aussi la bande passante du CDN vers l’origine et, lorsqu’il est activé, le trafic du bouclier vers la périphérie. Les 219 $ indiqués ici excluent ces chemins ; même une requête GET envoie des en-têtes de requête vers l’origine. Ajoutez-les à l’aide de la définition de facturation de Fastly avant d’estimer une facture complète. Aucun des deux sous-totaux d’usage n’inclut la facture du fournisseur d’origine.
Distinguer les succès de cache du trafic des visiteurs
Un succès de cache en périphérie livre tout de même la réponse au visiteur. Améliorer le taux de succès en périphérie ne réduit donc pas les octets ni les requêtes des visiteurs dans ce calcul lorsque les réponses demandées restent identiques. Des réponses plus légères et la mise en cache par le navigateur peuvent réduire le trafic des visiteurs ; une meilleure mise en cache en périphérie modifie principalement ce qui atteint l’origine.
Suivez deux ratios différents : le taux de succès par requête compte les requêtes servies depuis le cache, tandis que le taux de succès en octets pondère les succès par la taille des réponses. Dans un modèle simplifié où chaque défaut de cache récupère depuis l’origine une réponse complète de même taille :
- Avec un taux de succès par requête de 90 %, cinq millions de requêtes des visiteurs impliquent 500 000 requêtes vers l’origine.
- Avec un taux de succès en octets de 80 %, 2 000 GB livrés aux visiteurs impliquent 400 GB récupérés depuis l’origine.
- Porter uniquement le taux de succès en octets à 95 % réduit ce volume d’origine à 100 GB, soit une baisse de 300 GB. La diffusion aux visiteurs reste de 2 000 GB.
Ces calculs de trafic sont hypothétiques. La revalidation, le regroupement de requêtes, le shielding et une compression différente sur la connexion à l’origine peuvent modifier le trafic réel vers l’origine. La documentation des analyses de cache de Cloudflare illustre pourquoi une revalidation peut contacter l’origine sans télécharger à nouveau le corps de la réponse. Mesurez ce trafic séparément avant d’attribuer des économies. Le transfert depuis une origine AWS vers CloudFront est déjà gratuit selon sa tarification publiée, n’y associez donc pas d’économie fictive sur la sortie d’origine ; les coûts de requêtes ou de calcul à l’origine peuvent toutefois encore évoluer.
Confronter l’estimation à votre application
Remplacez l’exemple par un mois d’octets et de requêtes par région de facturation, puis chiffrez séparément le travail à l’origine et les options requises. Gardez les transformations d’images, le traitement vidéo et l’exécution de fonctions en périphérie sur des lignes distinctes. Si une fonctionnalité réduit la taille des réponses, comparez son coût à la variation du trafic des visiteurs et de l’origine qui en résulte, plutôt que de supposer qu’elle s’amortit d’elle-même.
Mesurez le TTFB au p95, le comportement de chargement des pages et les taux d’erreur pour les utilisateurs et les états de cache qui comptent pour votre application. Un tableau de prix ne permet pas d’établir quel réseau offre les meilleures performances pour eux. Gardez des charges utiles et une configuration de cache comparables lorsque vous évaluez des alternatives.
Avant de vous engager, rapprochez le modèle d’une facture existante ou d’une estimation du fournisseur, en vérifiant le partage des quotas gratuits, les unités de facturation et les conditions du compte choisi. Consignez tout écart inexpliqué comme un coût non résolu, et non comme zéro. Vous obtenez ainsi un budget que vous pourrez réexaminer lorsque le trafic ou les exigences évolueront.
