GH GambleHub

CDN ed edge-cache

CDN ed edge-cache

1) Obiettivi

CDN (Content Delivery Network) riduce la latitanza e il carico sull'origin: cache i contenuti dinamici statici e condizionali sui nodi edge, garantisce scala, stabilità e sicurezza (DDoS/WAF), aggiunge una logica edge (riscrittura delle risposte/richieste, autenticazione, A/B).

2) Modello di cache e chiavi

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

Raccomandato:
  • Normalizza query ('utm _' escludi ',' v ',' lang ',' country'ecc.).
  • Minimizzare «Vary» (ad esempio «Vary: Accept-Encoding, Accept-Language»), evitare «Vary:».
  • L'API è la chiave del percorso + ID versione (semver, hash, build id) + query/headers (ad esempio, X-Tenant).
  • Per le pagine personalizzate, edge-segmentazione (cookie/geo) o Skip-Cache.

3) Criteri TTL e intestazioni

Intestazioni di base:
  • `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
  • «Surrogate-Control» (se supportato) è un criterio diverso per il CDN diverso dal browser.
  • «ETAG »/« Last-Modified» - richieste condizionali (304) e risparmio di traffico.
  • Per privato: 'Cache-Control: private, no-store', se non è possibile memorizzare la cache.
  • API che consentono la cache: 'Cache-Control: public, s-maxage = 60' + chiave di versione.

L'approccio consigliato è: risorse «eterne» (con fingerprint nel nome del file) «max-age = 31536000, immutabile»; «pagine/JSON» è un TTL + SWR breve.

4) Disabilità: purge/soft-purge

Purge by URL - puntuale.
Purge by tag/key - Pulizia di gruppo (usate'Surrogate-Key: products: 42 category: food ').
Soft-purge: contrassegna il contenuto «obsoleto», edge lo stale prima di ottenere la nuova versione.
Riscaldamento caldo: dopo il deploy, tirate fuori le pagine principali dalle regioni.

5) Edge-pattern prestazioni

Stale-While-Revalidate - Risposta rapida con una copia «obsoleta» + aggiornamento di sfondo.
Prefetch risorse critiche (proload, preconnect, dns-prefetch).
Compressione: gzip/br (per testo), zstd se il CDN è supportato.
HTTP/2/3 (QUIC) - Multiplex e latitanza ridotta.
TLS sessione respumption e OCSP stapling sul perimetro.

6) Immagini e video

Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Video: HLS/DASH, fragmented MP4, origin-shield (cache centrale) per ridurre le tempeste.
Servizi Thumbnail e signed URLs per immagini private.

7) Sicurezza perimetro

WAF: regole OWASP, blocco dei paesi/ASN, rate-limits con chiave (IP + cookie + token).
DDoS: L3/4 scrubbing, L7-checker, JS-challenge/turnstyle.
URL/cookie firmati per risorse private (video/report): TTL + HMAC/EdDSA.
Geo-fencing e compilazione (ad esempio, proibizione delle regioni).

8) Edge-compute (logica sul bordo)

Valigie:
  • Personalizzazione senza interruzione della cache: segmenti (A/B), geo, lingua su edge e contenuto nella cache.
  • Riscrivere risposte/titoli, reading, split AB.
  • Autenticazione di tornitura - Verifica della firma JWT, riferimento alla chiave.
  • Canary cookie/percent: parte del traffico è verso il nuovo backend.

Esempi di tecnologie: Cloudflare Workers/Durable Objects, Fastly Compute @ Edge, AWS Lambda @ Edge.

9) Multi-CDN e perimetro globale

Motivi: copertura, SLA, costi, limitazioni regionali, isolamento degli incidenti.
GSLB/Traffic Steering: geo/latency/errori reali; health-checks da più punti vant.
Schema unico chiavi/intestazione (Surrogate-Key), regole purge sincronizzate.
Origin-shield è comune a tutti i CDN per non «colpire» origin in caso di disabilità.

10) Loging e metriche

Raccogli:
  • Hit ratio (cache, CDN → edge/origin), byte hit ratio.
  • Latency p50/p95/p99, errato-rate per codice/percorso.
  • Origin fetches: RPS/byte/errori (protezione contro errori eccessivi).
  • Grafici regionali (POP/ASN/Paese).
  • Integrare con Osservability: Prometheus (pull tramite esportatori), Grafana/OTel (push da edge-logge).

11) SEO и SPA/SSR

Pagine SEO con SWR e TTL corto - veloce e «fresco».
Sitemap/robot - La cache è lunga, ma permetta soft-purge.
Servizio Worker: memorizzazione della cache offline, prefetch dei percorsi critici, aggiornamenti di destinazione.

12) Esempi di configurazioni e titoli

12. 1 profili Cache-Control

Statica con 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 (vetrina nella cache):

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

12. 2 NGINX (origin) - normalizzazione 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 e chiavi

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 Workers Cloudflare - URL firmati

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 - geo-varianti

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) Dati privati e API

Non memorizzare mai nella cache risposte private senza l'isolamento della chiave (per-utente/per-token).
Usate i cookie/Headers e «Vary: Authorization» solo con controlli rigorosi (altrimenti cache-bust).
Alternativa sicura: separare il livello pubblico (memorizzato nella cache) e gli incassi privati (ESI/edge composizione).

14) Geo/regole dei contenuti

Vincoli di licenza: geo-deny su edge, playsholder invece di bloccare origin.
I banner età/regolatori sono un render su edge (non perforare la cache).

15) Anti-pattern

«no-cache, no-store» per l'intero sito Web ha perso l'effetto CDN.
«Vary» per le intestazioni instabili (ad esempio, «User-Agente») è stato →.
Cancella l'intera cache in ogni messaggio.
TTL brevi senza SWR → la tempesta sull'origin.
Le pagine personali vengono memorizzate nella cache senza segmentazione/chiave token.
L'assenza di origin-shield ha causato errori paralleli multipli.

16) Assegno foglio di implementazione (0-45 giorni)

0-10 giorni

Categorizza le risorse: statica (immutabile )/HTML/API.
Attiva gzip/br, HTTP/2/3, normalizzazione query, Surrogate-Key.
Immettere SWR/IFE e purge di base.

11-25 giorni

Ottimizzazione delle immagini (resize/format), origin-shield.
URL firmati per media privati, profili WAF/DDoS.
Dashboard: hit ratio, origin fetches, p95 per POP.

26-45 giorni

Multi-CDN o strategia GSLB, pesi canari sul perimetro.
Edge-compute per segmentazione/AV/geo, soft-purge per chiavi.
Riscaldamento automatico e integrazione purge in CI/CD.

17) Metriche di maturità

Byte hit ratio 85% per la statica, 60% per l'altoparlante HTML/condizionale.
Origin RPS è stabile ai picchi (nessuna tempesta).
p95 TTFB ridotto del 30% per le regioni principali.
% di risposte stale in caso di incidenti> 90% (l'utente non si è accorto molto).
Automazione completa purge-in-chiave nella release-pipline.

18) Conclusione

Un tracciato CDN efficace sono chiavi/TTL/varianti, disciplina di invalidità e logica edge. Aggiungere SWR/IFE, origin-shield, ottimizzazione dei media e sicurezza rigorosa (WAF, URL sottoscritti). Standardizzare le metriche e integrare purge in CHI/CD e ottenere un perimetro veloce, economico e sostenibile, pronto per i picchi di carico e i cigni neri.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.