CDN și optimizarea reducerii latenței
1) Obiective și harta de întârziere
Latență = DNS + TCP/TLS + TTFB (server/origine/memorie cache) + livrare de conținut (volume RTT ×) + randare client.
Optimizare = reduce numărul de RTTs, reduce octeți, și muta de calcul/cache mai aproape de utilizator.
2) arhitectura CDN
Anycast POP este un nod de rutare BGP aproape de sfârșit.
Tiered caching/Origin Shield - un strat intermediar „umbrelă”, care reduce furtuna dor de origine.
Geo-/Regional routing - obligativitatea chiriasului/jurisdictiei (suveranitatea datelor, licente).
Failover - origine/regiune de rezervă, probe de sănătate și comutator rapid.
3) Cache: chei, antete, strategii
3. 1 chei cache
Implicit este "schema + gazdă + cale +? interogare ".
Adăugați numai parametrii pe care doriți ('? v = ','? lang = ','? chiriaș = '). Restul sunt în ignore-params.
'Vary' - minim: 'Accept-Encoding', 'Accept-Language' (dacă este necesar), 'Autorizare' sparge cache-ul.
3. 2 Politici
Statica publică: 'Cache-Control: public, max-age = 31536000, imuabil' + rev (hash în nume).
Jumătate de dinamică (directoare, reguli, întrebări frecvente): 's-maxage = 300, stale-while-revalidate = 600, stale-if-error = 86400'.
API-GET: utilizați ETag/Last-Modified, 'SWR/SIE', activați coalescing (o cerere pentru o cheie fierbinte).
Privat: răspunsuri personale - pe perimetrul prin edge-computer (ESI/kv) sau per-chiriaș cache.
3. 3 Anti-furtună
Cerere de coalescing - colaps cereri simultane dor.
Serviți-vechi - dați un obiect depășit atunci când originea eșuează.
Revalidare fundal - actualizare în fundal.
4) HTTP/2-3, TCP/TLS și întoarcerea timpurie
HTTP/2: multiplex, compresie antet; limit 'max fluxuri concurente', antete mari.
HTTP/3 (QUIC): scădere majoră a TTFB mobil/pierdere mare; Fii cu ochii pe Iniţial-rapids şi Retry.
TLS 1. 3: strângere de mână 1-RTT; Capsarea OCSP; HSTS.
0-RTT: numai pentru „GET” idempotent și dacă sunt luate în considerare riscurile de reluare.
103 Early Hints: Early 'Link: rel = preîncărcare' pentru resurse critice.
Preconnect/DNS-prefetch: '<link rel = "preconnect" href = "https ://cdn. exemplul">'.
5) Edge-calcul și „personalizare fină”
Pe muchie: recensământ titlu, fixare geo/chiriaș, marcare A/B, personalizare ușoară fără a cere o origine.
Regulă: nu stoca PII pe nodurile POP; numai agregate cache/date publice.
6) Optimizarea mass-media și formate
Imagini: conversie automată în WebP/AVIF, redimensionare pe margine, „srcset/mărimi”, „lazyload”.
Compresie: Brotli pentru texte (HTML/CSS/JS/JSON), rezervă gzip.
Video: HLS/DASH, CDN-segment caching, 'preload = metadate', poster.
Fonturi: subset + 'font-display: swap'; gazdă cu memorie cache lungă.
CSS critic: primul ecran inline; restul este async.
7) modele API și cache
Idempotent GET - ne cache de chei de cerere (inclusiv versiunea de date).
ETag: Încărcătură utilă puternică + „If-None-Match”.
Surogat-Control (specific CDN) pentru a distinge de clientul 'Cache-Control'.
URL-uri semnate - pentru privat static/media.
GraphQL: normalizați memoria cache cheie prin operare/variabile; utilizați memoria cache/resolver cache parțială.
WebSockets: pentru mesaje în timp real - scurta, comprima (permessage-dezumflare), poziția WS-cioburi mai aproape de utilizator.
8) Exemple de configurare
8. 1 NGINX (origine: am memorie 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, ignora cookie-uri)
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 (Reguli de transformare, Reguli de cache, Sugestii timpurii - псевдо)
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) Rețele mobile și Internet „instabil”
Utilizați HTTP/3 agresiv; reduce dimensiunea căii critice (HTML + critic CSS <14 KB).
Prioritate H2/H3: Prioritizare (HTML→CSS→JS→media mai târziu).
Politica Retray cu jitter, idempotenta pentru API.
Dimensiune-bugete și grupare: cod-divizare, amânat JS, eliminarea CSS neutilizate/JS.
10) Observabilitate și SLO
ROM: TTFB, LCP, INP, CLS pe regiuni/ASN/chiriași; distribuții p95/p99.
Sintetice: ruta de control "/sănătate/cdn' prin POP-s.
Valori cache: hit-ratio global și per cheie; rata de preluare a originii; economii de coagulare.
Alerte: scăderea raportului de lovire, creșterea originii-ieșire, degradarea H3-fraction, 5xx pe scut.
11) Specificul iGaming/Finanțe
Cataloage/cote de joc: short 's-maxage' + SWR; ключ conștiente de regiune ("chiriaș" region 'lang ").
Vârfuri de eveniment (meciuri, desene): încălzirea cache-ului (pre-cald), „înghețarea” personalizărilor grele, sursele de oglindă.
Plata/cabinet: nu cache privat, dar accelera prin H3 + edge-TLS și închide regiunea.
Jurisdicții: domenii/căi împărțite pe regiune; 'Vary: X-Region' control.
12) Antipattern
„Vary:” pe tot; tasta cache depinde de cookie-urile/anteturile inutile.
Lipsa de SWR/SIE → ecrane negre pentru eșecuri de origine scurtă.
Ștergeți memoria cache „peste tot” în loc de handicap punct de tag-uri/chei.
Resurse fără revizuirea numelui și cu 'max-age = 0'.
Global nega-cache pentru „Autorizare” chiar și în cazul în care public este dat.
Lipsa de coagulare → furtunii asupra originii.
Personalizare prematură „grea” pe POP.
13) Lista de verificare Prod Readiness
- Anycast POP + pe niveluri/scut; controalele de sănătate și eșecul originii.
- Cheile cache sunt minime; ignora interogarile/cookie-urile inutile; „Surogat-Control”.
- SWR/SIE activat, coalescing activ; servi-vechi pe erori.
- HTTP/3 activat; TLS 1. 3; 103 Early Hints este configurat pentru resurse critice.
- Imagini: AVIF/WebP, redimensionare pe margine; Brotli pentru versuri.
- API-GET с ETag/Ultima modificare; idempotență/retrageri; nu cache profiluri private.
- Preconectarea la domeniile statice; critică CSS inline.
- Metrics: hit-ratio, origin-egress, TTFB/LCP p95, H3-share, pe regiuni/chiriași.
- Planul de încălzire a memoriei cache înainte de evenimente; handicap punct (etichete).
- Variază/chei/documentație TTL; playbook de incidente (scădere a raportului de succes).
14) TL; DR
Păstrați drumeții la o origine la un nivel minim: niveluri/scut + corespunzătoare cache-chei + SWR/SIE + coalescing. Porneşte HTTP/3/TLS 1. 3, utilizați 103 Early Hints și preconnect. Comprimați și convertiți suporturi la margine, CSS critic inline. Pentru API - ETag, îngrijit „Vary”, idempotență și caching rezonabil „GET”. Măsurați raportul de succes, TTFB/LCP p95, ieșirea de origine și încălzirea memoriei cache în avans la vârfuri.