Programmation · web · performance
C'est quoi un CDN ?
Un CDN (content delivery network, reseau de diffusion de contenu) est un ensemble de serveurs repartis sur de nombreux emplacements qui gardent des copies de votre contenu statique - images, CSS, JavaScript, polices, videos - et servent chaque visiteur depuis un serveur geographiquement proche de lui. L'objectif est simple : raccourcir la distance qu'une requete doit parcourir, pour que les pages se chargent plus vite et que votre serveur principal travaille moins. Si votre site est heberge dans une seule ville, un visiteur a l'autre bout de la planete n'a plus a traverser le monde pour chaque fichier.
Le probleme qu'il resout
Quand votre site vit sur un seul serveur, chaque requete - de chaque pays - doit atteindre cette unique machine et revenir. La distance coute du temps : plus le visiteur est loin, plus la latence s'installe, et plus votre serveur est charge a mesure que le trafic grandit. Un CDN repond aux deux problemes en placant des copies de vos fichiers plus pres des gens et en retirant l'essentiel de la charge des requetes de votre origine.
Serveurs edge et points de presence
Les serveurs qu'un CDN utilise pour mettre en cache et servir le contenu sont souvent appeles serveurs edge, places a la peripherie ("edge") du reseau, pres des utilisateurs, plutot qu'a votre origine centrale. Des groupes de ces serveurs sont installes dans des data centers partout dans le monde, parfois appeles points de presence (PoP). Quand quelqu'un demande un fichier, le CDN le dirige vers un serveur edge proche plutot que vers votre origine. Comme ce serveur est proche, l'aller-retour est plus court et la livraison plus rapide.
Cache hit, cache miss et l'origine
Le mecanisme central d'un CDN est le cache. La premiere fois qu'on demande a un serveur edge un fichier qu'il n'a pas, c'est un cache miss : l'edge recupere le fichier depuis votre serveur d'origine, l'envoie au visiteur et en stocke une copie. Le visiteur suivant sur ce meme edge obtient un cache hit - le fichier est deja la et servi immediatement, sans toucher l'origine du tout.
requete -> serveur edge le plus proche
cache HIT -> sert la copie stockee (rapide, origine intacte)
cache MISS -> recupere depuis l'origine, sert, puis stocke pour la fois suivante C'est pourquoi un CDN accelere la livraison et decharge l'origine : une fois le contenu mis en cache a l'edge, la plupart des requetes sont traitees sans jamais atteindre votre serveur. Lors d'un pic de trafic, le reseau edge absorbe le gros de la charge.

TTL et invalidation : garder le cache a jour
Une copie en cache ne peut pas vivre eternellement, sinon les visiteurs continueraient de voir une ancienne version apres la mise a jour d'un fichier. Deux mecanismes gerent cela :
- TTL (time to live) : chaque element en cache recoit une duree de vie, generalement pilotee par les en-tetes de cache HTTP comme
Cache-Control. Quand le TTL expire, l'edge considere l'element comme perime et re-verifie l'origine avant de le servir a nouveau. - Invalidation (purge) : quand vous deployez un changement et ne pouvez pas attendre le TTL, vous demandez au CDN de supprimer certains fichiers en cache, si bien que la requete suivante recupere la version fraiche depuis l'origine. Une astuce courante qui evite toute purge est le cache busting - changer le nom du fichier ou ajouter une version en parametre, par exemple
style.abc123.css, pour qu'une nouvelle URL soit recuperee fraiche.
Contenu statique vs contenu dynamique
Les CDN brillent avec le contenu statique : des fichiers identiques pour tout le monde et qui changent rarement, comme les images, feuilles de style, scripts et telechargements. Ils se mettent proprement en cache et peuvent etre servis depuis l'edge longtemps. Le contenu dynamique - un tableau de bord personnalise, ou une reponse qui depend de qui est connecte - est plus difficile a mettre en cache, car la reponse differe selon la requete. Les CDN modernes aident quand meme ici avec des fonctions comme la reutilisation de connexion et l'execution de petits bouts de logique a l'edge, mais le gain classique et le plus grand reste la mise en cache des ressources statiques pres des utilisateurs.
Ce qu'un CDN fait aussi couramment
Au-dela du cache, la plupart des CDN embarquent des extras utiles. Ils terminent generalement le TLS (HTTPS) a l'edge et appliquent la compression pour que les fichiers voyagent plus petits et chiffres. Beaucoup ajoutent aussi une protection contre les afflux de trafic et absorbent la charge qui frapperait sinon votre origine. Parmi les CDN reels et tres utilises figurent Cloudflare, Fastly et Akamai ; pour les bibliotheques open source, des CDN publics comme jsDelivr servent des paquets directement depuis un reseau edge mondial.
Ou se place un CDN par rapport a votre hebergeur
Un CDN ne remplace pas votre hebergement - il se place devant. Votre serveur ou VPS reste l'origine qui detient les vrais fichiers et fait tourner votre application ; le CDN met en cache et diffuse des copies des parties cachables. Il s'associe aussi naturellement a un reverse proxy devant votre app : le proxy route et termine le TLS a votre origine, tandis que le CDN gere la couche edge mondiale. Il vous faut quand meme un hebergeur d'origine solide sous le tout.
FAQ
Un CDN remplace-t-il mon hebergeur ? Non. Votre hebergeur est l'origine qui stocke les vrais fichiers et fait tourner votre app. Un CDN met en cache et sert des copies des parties statiques cachables depuis des serveurs proches de vos visiteurs. Il vous faut les deux : une origine fiable plus la couche edge devant elle.
Quelle est la difference entre un cache hit et un cache miss ? Un hit signifie que le serveur edge a deja le fichier demande en cache et le sert immediatement. Un miss signifie qu'il ne l'a pas, alors il recupere le fichier depuis votre origine, le sert et en stocke une copie pour que la requete suivante soit un hit.
C'est quoi le TTL ? Time to live : combien de temps un element en cache est considere comme frais, generalement defini par les en-tetes de cache HTTP. Quand le TTL expire, l'edge re-verifie l'origine avant de servir l'element a nouveau, si bien que les mises a jour finissent par atteindre tout le monde.
Un CDN peut-il mettre en cache du contenu dynamique ? En partie. Le contenu qui differe selon l'utilisateur est difficile a mettre en cache directement, mais les CDN l'accelerent quand meme avec la reutilisation de connexion, la compression et la logique a l'edge. Le gain le plus grand et le plus simple reste la mise en cache des ressources statiques comme les images, le CSS et le JavaScript pres des utilisateurs.
Le serveur d'origine derriere votre CDN
Un CDN met en cache des copies de votre contenu, mais il lui faut quand meme un vrai serveur d'origine qui detient les fichiers source et fait tourner votre app. Infomaniak - un fournisseur suisse respectueux de la vie privee - propose des VPS et serveurs cloud a utiliser comme origine, puis vous placez un CDN devant pour servir les ressources statiques depuis l'edge.
Voir Infomaniak Cloud →Lien affilie - il soutient ces guides gratuits.