GH GambleHub

Ottimizzazione di CDN e latency reduction

1) Obiettivi e mappa dei ritardi

Latency = DNS + TCP/TLS + TTFB (server/origine/cache) + distribuzione di contenuti (RTT x volumi) + render client.
Ottimizzazione = ridurre il numero di RTT, ridurre i byte e spostare i calcoli/cache più vicini all'utente.

2) Architettura CDN

Anycast POPS è un sito di routing BGP vicino.
Tiered cache/Origin Shield è uno strato intermedio «ombrello» che riduce la tempesta miss sull'origine.
Geo-/Regionale routing - riferimento tenante/giurisdizione (sovranità dei dati, licenze).
Failover - Origina/regione ridondante, provini health e interruttore rapido.

3) Cache: chiavi, intestazioni, strategie

3. 1 Chiavi cache (cache key)

L'impostazione predefinita è «scheme + host + path +? query».
Aggiungi solo i parametri desiderati («? v =», «? lang =», «? tenant =»). Gli altri sono in ignore-params.
«Vary» è il minimo: «Accettt-Encoding», «Accettt-Language» (se necessario), «Authorization» di solito rompe la cache.

3. 2 Criteri

Statica pubblica: 'Cache-Control: public, max-age = 31536000, immutabile' + rev (hash nel nome).
Seminamica (cataloghi, regole, FAQ): 's-maxage = 300, stale-while-revalidate = 600, stale-if-errore = 86400'.
API-GET: usa ETAG/Last-Modified, 'SWR/SIE', abilita il coalescing (una sola richiesta a chiave calda).
Private - Risposte personali - sul perimetro tramite edge-compute (ESI/kv) o per-tenant cache.

3. 3 Anti-tempesta

Richiest coalescing - Contrarre le richieste di miss simultanee.
Serve-stale - Restituisci un oggetto obsoleto in caso di errore dell'origine.
Background revalidation - aggiorna sullo sfondo.

4) HTTP/2-3, TCP/TLS e ritorno precoce

HTTP/2: multiplex, compressione dei titoli limitare «max concurrent streams», grandi titoli.
HTTP/3 (QUIC): riduzione importante del TTFB per le perdite mobili/elevate; Tenere d'occhio le soglie iniziali e Retry.
TLS 1. 3: 1-RTT handshake; OCSP stapling; HSTS.
0-RTT: solo per «GET» idipotenti e se i rischi replay sono considerati.
103 Early Hints - Primi «Link: rel = proload» per le risorse critiche.
Preconnect / DNS-prefetch: `<link rel="preconnect" href="https://cdn. example">`.

5) Edge-compute e «personalizzazione sottile»

Sul bordo: censimento dei titoli, geo/tenante-fissazione, marcatura A/B, personalizzazione leggera senza richiesta di origine.
Regola: non memorizzare PII su nodi POP; Cache solo aggregazioni/dati pubblici.

6) Ottimizzazione dei media e dei formati

Immagini: conversione automatica in WebP/AVIF, resize-on-edge, «srcset/sizes», «lazyload».
Compressione: Brotli per testi (HTML/CSS/JS/JSON), gzip fallback.
Video: HLS/DASH, CDN-segment cache, «pratoad = metadata», poster.
Caratteri subset + 'font-display: swap'; ostaggio con una lunga cache.
CSS critico: inline prima schermata il resto è async.

7) pattern API e cache

Idempotent GET - Memorizziamo nella cache le chiavi della query (inclusa la versione dei dati).
ETAG: forte hash di carico utile + 'If-None-Match'.
Surrogate-Control (CDN-specificità) per differenziare il client da Cache-Control.
Signed URLs - per lo statico/media privato.
GraphQL - Normalizzare la chiave cash per operazione/variabile; Utilizzare la cache partial cache/resolver.
WebSockets: per il real-time: riduce i messaggi, comprime (permessage-deflate) e posiziona i chard WS più vicini all'utente.

8) Esempi di configurazione

8. 1 NGINX (origine: cache API-GET)

nginx
We give SWR and ETag location/api/v1/catalog/{
proxy_cache api_cache;
proxy_cache_key "$scheme$request_method$host$uri$is_args$args";
proxy_cache_valid 200 5m;
proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504;
add_header Cache-Control "public, s-maxage=300, stale-while-revalidate=600, stale-if-error=86400";
add_header ETag $upstream_http_etag;
proxy_ignore_headers Set-Cookie; # do not break the Set-Cookie proxy_hide_header cache;
proxy_pass http://catalog;
}

8. 2 Fastly VCL (SWR, coalescing, ignore cookies)

vcl sub vcl_recv {
set req. hash_ignore_busy = true;   # coalescing if (req. url. qs ~ "^(?!.(lang    v)=)") { remove req. url. qs; }
if (req. http. Cookie) { remove req. http. Cookie; }
}

sub vcl_backend_response {
set beresp. ttl = 300s;
set beresp. stale_if_error = 86400s;
set beresp. stale_while_revalidate = 600s;
if (beresp. http. Set-Cookie) { unset beresp. http. Set-Cookie; }
}

8. 3 Cloudflare (Transform Rules, Cache Rules, Early Hints — псевдо)

json
{
"cache_rule": {
"if": "http. request. uri. path matches \"/assets/.\"",
"action": {"cache": {"eligibility":"eligible", "ttl": 31536000}}
},
"transform_rule": {
"set_headers": [{"name":"Cache-Control","value":"public, s-maxage=300, stale-while-revalidate=600"}]
},
"early_hints": {"enable": true}
}

9) Reti mobili e Internet «instabile»

Usare in modo aggressivo HTTP/3; Ridurre le dimensioni del percorso critico (HTML + critical CSS <14 KB).
Priority H2/H3: fissa le priorità (HTML→CSS→JS→media più tardi).
Politica Retrai con jitter, idempotency per API.
Size-budgets e bandling: codice-splitting, deferred JS, rimozione CSS/JS inutilizzato.

10) Osservabilità e SLO

RUM: TTFB, LCP, INP, CLS per regione/ASN/tenanti; distribuzione p95/p99.
Sintetico: percorso di controllo «/health/cdn »per POP.
Cash metriche: hit-ratio overall e per-key; origin fetch rate; coalescing savings.
Alert: calo hit-ratio, crescita origin-egress, degrado H3-quota, 5xx per shield.

11) Specificità iGaming/finanza

Cataloghi giochi/coefficienti: brevi «s-maxage» + SWR; region-aware ключ (`tenant|region|lang`).
Picchi di eventi (partite, battute): riscaldamento della cache (pre-warm), congelamento delle personalizzazioni pesanti, sorgenti mirror.
Pagamenti/ufficio - Non memorizzare la cache privata, ma accelerare attraverso H3 + edge-TLS e la regione vicina.
Giurisdizioni: domini/percorsi per-regione separati; Controlle'Vary: X-Region '.

12) Antipattern

«Vary:» A tutto; la chiave cache dipende dai cookie/intestazioni in eccesso.
Nessuna schermata nera SWR/SIE in caso di guasti brevi dell'origine.
Cancella la cache in tutto anziché disabilitare i punti per tag/chiavi.
Risorse senza revisione dei nomi e con «max-age = 0».
Deny-cache globale per «Authorization» anche dove viene dato il pubblico.
L'assenza di coalescing è una tempesta origina.
Personalizzazione prematura «pesante» su POP.

13) Assegno-foglio prod-pronto

  • Anycast POP + tiered/shield; health check e origin failover.
  • Le chiavi della cache sono minime; ignorare query/cookies in eccesso; Surrogate-Control.
  • SWR/SIE abilitato, coalescing attivo; serve-stale in caso di errore.
  • HTTP/3 abilitato; TLS 1. 3; 103 Early Hins è configurato per le risorse critiche.
  • Immagini: AVIF/WebP, resize-on-edge; Brotli per i testi.
  • API-GET с ETag/Last-Modified; Idampotenza/retrai; non memorizzare profili privati nella cache.
  • Precisnect ai domini statici CSS inline critico.
  • Metriche: hit-ratio, origin-egress, TTFB/LCP p95, H3, per regione/tenente.
  • Piano di riscaldamento della cache prima degli eventi disabilità a punti (tag).
  • Documentazione Vary/keys/TTL; playbook incidenti (caduta hit-ratio).

14) TL; DR

Riduce le escursioni all'origine al minimo: tiered/shield + cache-keys corretta + SWR/SIE + coalescing. Attivare HTTP/3/TLS 1. 3, utilizzare 103 Early Hins e precisnect. Comprimere e convertire i media sul bordo, incollare il CSS critico. Per API - ETag, «Vary», Idampotenza e Memorizzazione Intelligente GET. Misurare hit-ratio, TTFB/LCP p95, origin egress e riscaldare la cache in anticipo sui picchi.

Contact

Mettiti in contatto

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

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.