GH GambleHub

CDN et edge-cache

CDN et edge-cache

1) Objectifs

Le CDN (Content Delivery Network) réduit la latence et la charge sur l'origin : il met en cache le contenu statique et conditionnellement dynamique sur les nœuds edge, assure l'échelle, la résilience et la sécurité (DDoS/WAF), ajoute la logique edge (réécriture des réponses/requêtes, authentification, A/B).

2) Modèle de cache et clés

Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`

Recommandé :
  • Normaliser query ('utm _' supprimer, laisser 'v', 'lang', 'country', etc.).
  • Minimiser 'Vary' (par exemple 'Vary : Accept-Encoding, Accept-Language'), éviter 'Vary :'.
  • Pour l'API, la clé de la route + l'ID de version (semver, hash, build id) + les query/headers souhaités (par exemple, « X-Tenant »).
  • Pour les pages personnalisées, la segmentation edge (par cookie/géo) ou Skip-Cache.

3) Politiques et titres de TTL

Titres de base :
  • `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
  • « Surrogate-Control » (si pris en charge) est une stratégie distincte pour le CDN autre que le navigateur.
  • « ETag »/« Last-Modified » - demandes conditionnelles (304) et économies de trafic.
  • Pour le privé : 'Cache-Control : private, no-store' si vous ne pouvez pas le mettre en cache.
  • API qui permettent le cache : 'Cache-Control : public, s-maxage = 60' + clé par version.

Approche recommandée : ressources « éternelles » (avec fingerprint dans le nom de fichier) → « max-age = 31536000, immutable » ; « pages/JSON » → court TTL + SWR.

4) Handicap : Purge/soft-purge

Purge par URL : point.
Purge par tag/key : nettoyage de groupe (utilisez 'Surrogate-Key : products : 42 category : food').
Soft-purge : marque le contenu « obsolète », edge donne stale avant d'avoir une nouvelle version.
Échauffement « chaud » : après le déploi, videz les principales pages des régions.

5) Modèles de performance Edge

Stale-While-Revalidate : réponse rapide par copie « obsolète » + mise à jour en arrière-plan.
Prefetch des ressources critiques (preload, preconnect, dns-prefetch).
Compression : gzip/br (pour les textes), zstd si le CDN est pris en charge.
HTTP/2/3 (QUIC) : multiplexage et latence réduite.
TLS session resumption et OCSP stapling sur le périmètre.

6) Images et vidéos

Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Vidéo : HLS/DASH, MP4 fragmentée, origin-shield (cache central) pour réduire les « tempêtes ».
Services Thumbnail et URL signées pour les images privées.

7) Sécurité du périmètre

WAF : règles OWASP, blocage pays/ASN, taux-limites avec clé (IP + cookie + token).
DDoS : scribbing L3/4, checker L7, challenges JS/turnstile.
URL/cookies signés pour les ressources privées (vidéos/rapports) : TTL + HMAC/EdDSA.
Géo-fencing et conformité (par exemple, interdiction des régions).

8) Edge-compute (logique sur le bord)

Mallettes :
  • Personnalisation sans claquement de cache : segments (A/B), géo, langue sur edge, et contenu - cache.
  • Réécrire les réponses/titres, redirect, AB-split.
  • Authentification token : vérification de la signature JWT, référence à la clé.
  • Canary par cookie/percent : une partie du trafic est vers le nouveau backend.

Exemples de technologies : Cloudflare Workers/Durable Objects, Fastly Compute @ Edge, AWS Lambda @ Edge.

9) Multi-CDN et périmètre mondial

Causes : couverture, SLA, coût, contraintes régionales, isolement des incidents.
GSLB/Traffic Steering : par géo/latence/erreurs réelles ; health-checks de plusieurs points de vantage.
Schéma de clé/en-tête unique (Surrogate-Key), règles de purge synchronisées.
L'origin-shield est commun à tous les CDN afin de ne pas « frapper » l'origin en cas de handicap.

10) Loging et métriques

Collecter :
  • Hit ratio (cache, CDN → edge/origin), byte hit ratio.
  • Latitude p50/p95/p99, taux d'erreur par code/itinéraire.
  • Origine fetches : RPS/octets/erreurs (protection contre les erreurs redondantes).
  • Graphiques régionaux (POP/ASN/pays).
  • Intégrer avec Observability : Prometheus (pull via exportateurs), Grafana/OTel (push from edge logs).

11) SEO и SPA/SSR

Pages SEO avec SWR et court TTL - rapide et « frais ».
Sitemap/robots - nous mettons en cache longtemps, mais admettez soft-purge.
Service Worker : mise en cache hors ligne, prefetch des chemins critiques, mises à jour ciblées.

12) Exemples de configurations et titres

12. 1 Profils Cache-Control

Statique avec fingerprint :

Cache-Control: public, max-age=31536000, immutable
HTML/SSR:

Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (vitrine cache) :

Cache-Control: public, s-maxage=60
Vary: Accept-Encoding

12. 2 NGINX (origin) - normaliser query/headers

nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^    &)v=([a-z0-9]+)(&    $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";

12. 3 Fastly VCL - soft-purge et clés

vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}

12. 4 Cloudflare Workers - URL signées

js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}

12. 5 Lambda @ Edge - options géo

js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value          'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};

13) Données privées et API

Ne jamais mettre en cache les réponses privées sans isoler la clé (per-user/per-token).
Utilisez les cookies signés/Headers et « Vary : Autorisation » uniquement sous contrôle strict (sinon, cache-bust).
Alternative sûre : séparez la couche publique (cache) et les encodages privés (ESI/edge-composition).

14) Géo/règles de contenu

Restrictions de licence : geo-deny sur edge, playholders au lieu de verrouiller origin.
Bannières d'âge/de régulation - rendu sur edge (ne pas percer le cache).

15) Anti-modèles

« no-cache, no-store » pour l'ensemble du site → perte d'effet CDN.
« Vary » par les titres instables (par exemple, « User-Agent ») → cardinalité.
Effacer le cache entier à chaque sortie.
Court TTL sans SWR → « tempête » sur origin.
Les pages personnelles sont mises en cache sans segmentation/clé token.
L'absence d'origin-shield → de multiples erreurs parallèles.

16) Chèque de mise en œuvre (0-45 jours)

0-10 jours

Catégoriser les ressources : statique (immutable )/HTML/API.
Activer gzip/br, HTTP/2/3, normaliser query, 'Surrogate-Key'.
Entrez SWR/IFE et purge de base.

11-25 jours

Optimisation Edge des images (resize/format), origin-shield.
URL signée pour les médias privés, profils WAF/DDoS.
Dashboards : hit ratio, origin fetches, p95 par POP.

26-45 jours

Multi-CDN ou stratégie GSLB, poids canaris sur le périmètre.
Edge-compute pour la segmentation/AV/geo, soft-purge par clé.
Auto-échauffement et intégration de purge dans CI/CD.

17) Métriques de maturité

Byte hit ratio ≥ 85 % pour la statique, ≥ 60 % pour la dynamique HTML/conditionnelle.
L'Origin RPS est stable aux pics (pas de « tempêtes »).
p95 TTFB réduit de ≥ 30 % pour les grandes régions.
Taux de réponse stale pour les incidents> 90 % (l'utilisateur n'a presque pas remarqué).
Automatisation complète des clés de sortie.

18) Conclusion

Une boucle CDN efficace est la clé/TTL/options, la discipline de l'invalidité et la logique edge. Ajoutez SWR/IFE, origin-shield, optimisation des médias et sécurité stricte (WAF, URL signée). Standardisez vos métriques et intégrez-les dans CI/CD - et vous obtiendrez un périmètre rapide, économique et stable, prêt pour les charges de pointe et les « cygnes noirs ».

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Telegram
@Gamble_GC
Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.