GH GambleHub

Memorie cache şi POP

1) Ce este POP și de ce este „marginea”

POP (Point of Presence) este un nod de rețea de livrare a conținutului (CDN/edge) aproape geografic de utilizator. Memoria cache Edge - un strat de stocare a răspunsurilor direct în POP, ceea ce reduce:
  • Latență (mai puțin RTT înainte de client).
  • Încărcare și cost pe origine (descărcare).
  • Trafic între regiuni/nori (de ieșire-economisire).

Edge nu este doar o memorie cache. POP-urile moderne acceptă rutare L7, filtre WAF/bot, limită de rată, A/B/canare, transformări și muchii de calcul (scripturi/funcții).

2) arhitecturi de caching Edge

2. 1 Apartament vs niveluri

Flat: Fiecare POP merge la origine. Simplu, dar scump pentru origine.
Etajat/Scut: POP → Shield POP (memorie cache centrală) → origine. Scutul acumulează pierderi de memorie cache, creează o umbrelă pentru origine.

2. 2 Segmente regionale

Domenii separate de caching pe regiuni/jurisdicții (GDPR/localizare date).
Variantă: „POP-uri numai pentru UE” și „POP-uri globale”, chei/reguli separate.

2. 3 Anycast + latenţă/rutare geo-conştientă

Anycast aduce clientul la cel mai apropiat POP prin BGP.
Comutatoare conștiente de geo/latență între piscine POP/regionale pe măsurători active RTT/eroare.

3) chei cache, „Vary”, TTL și prospețime

3. 1 Design cheie

Normalizați interogările: sortați parametrii de interogare, eliminați zgomotul (utm, ref).
Includeți axe semantice: 'chiriaș', 'local', 'versiune schemă' ('v = 3'), dar evitați PII.
Pentru conținut privat, separați memoria cache publică și privată (a se vedea § 7).

3. 2 Controlul memoriei cache (HTTP)

Titluri:
  • 'Cache-Control: public, max-age = 60, s-maxage = 300, stale-în timp ce-revalidat = 60, vechi-dacă-eroare = 120'
  • "ETag "/" Last-Modified 'for condițional GETs (304).
  • Vary: minimizați cardinalitatea ('Accept-Encoding', 'Accept-Language', uneori 'Autorizare '/' Cookie' pentru căi private).
  • Micro-cache pentru „near-speaker”: 1-5 secunde + SWR.

3. 3 Strategii vechi

SWR (stale-în timp ce-revalidate): da un răspuns depășit și actualiza cu fundalul.
SIE (stale-if-error): în cazul unei erori de origine, folosim memoria cache înainte de „SIE” -TTL.
Soft/Hard TTL: termen moale (poate vechi), greu (complet dor).

4) Dizabilitate: cum să actualizați „marginea”

4. 1 După cheie și după tag-uri

PURGE/BAN prin URL/prefix - dur, dar rapid.
Surogat-Key/Tags: atribuie etichete obiectelor ('articol: 42', 'categorie: 7'), ban by tag - handicap în masă fără forţă brută URL.

4. 2 Handicap de eveniment

Atunci când schimbați datele de origine, publicați evenimente (Kafka/NATS) → margine dezactivat apel BAN/PURGE/soft-expiră.

4. 3 Versioning artefact

Pentru static - conținut-hash în numele fișierului.
Pentru API-uri, schimbați versiunea cheie ('v = 4') pentru modificări incompatibile.

5) Protecția și performanța originii

5. 1 Ecranare de origine

Activați Shield POP ca un singur punct de miss → înmulțiți furtuna cu originea.

5. 2 Coalescing/un singur zbor

La margine, o cerere „lovește” memoria cache la o ratare; restul de așteptare (fără busculadă).

5. 3 Limita de tarif/Coadă/Vărsare на margine

Dacă este supraîncărcat, lăsați cererile cu prioritate redusă/anonime la POP, nu la origine.

5. 4 URL semnat/Cookie semnat

Originea este ascunsă în spatele marginii. Acces la conținut privat - prin link-uri/cookie-uri semnate cu TTL și atribute (IP/Geo/Path), pentru a nu distribui „tuturor”.

6) Transport și transformare

6. 1 HTTP/2-3 и QUIC

HTTP/2: multiplexare, compresie antet.
HTTP/3/QUIC: mai puține încuietori HOL și mai bine pe canalele de → pierdute sub p95/p99 TTFB.

6. 2 Compresie și imagini

Brotli pentru text, AVIF/WebP pentru imagini, redimensionarea imaginilor la margine (dimensiuni receptive, DPR).
Variante de cache după format/dimensiune: tastele includ „lățime/format” (sau „Vary: Accept ”/Client-Sugestii).

6. 3 TLS/0-RTT (îngrijit)

Reluarea sesiunii accelerează instalarea, 0-RTT poate fi vulnerabilă la reluare → permite numai pentru GET-uri idempotente.

7) cache public vs privat edge

7. 1 Public

'Cache-Control: public, s-maxage =... "şi minimal" Vary "

Potrivit pentru catalog, știri, imagini, CDN static.

7. 2 Privat/Personalizat

Opțiuni:
  • Nu cache la nivel partajat: „Cache-Control: privat” (memoria cache a browserului).
  • Segmentarea cheilor: includeți chiriașul/id-ul de utilizator (sau token-hash) în cheie și marcați ca partajat privat (atent cu stocarea și PII).
  • Cookie-uri semnate și Edge-auth: cache-ul este public, dar accesul prin semnătură (opțiuni cu stare de sesiune criptată pe margine).

8) Edge-calcul (lucrători/funcții)

Funcții ușoare pe POP: rescrierea căii/anteturilor, împărțirea A/B, normalizarea cheii, logica SWR, prefetchul resurselor vecine.
API local KV/Cache pe POP pentru operații milisecunde.
Limitări: scurte intervale de timp/memorie, lipsa conexiunilor de lungă durată, lucrul atent cu PII/regionalitate.

Pseudo-exemplu (Workers-like)

js export default {
async fetch(req, env) {
const key = normalize(req);
let res = await caches. default. match(key);
if (res) return withHitHeader(res, "HIT");

res = await fetch(req, { cf: { cacheEverything: true }});
const ttl = computeTTL(res);
eventWaitUntil(caches. default. put(key, res. clone(), { expirationTtl: ttl }));
return withHitHeader(res, "MISS");
}
}

9) Exemple de configurare

9. 1 Nginx: micro-cache + SWR

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api:200m inactive=30m;
map $request_method $skip_cache { default 0; POST 1; PUT 1; DELETE 1; }

server {
location /api/list {
proxy_cache api;
proxy_cache_key "$scheme://$host$uri$is_args$args";
proxy_cache_valid 200 2s;          # micro-cache proxy_cache_use_stale error timeout updating;# SIE + SWR proxy_cache_background_update on;
add_header X-Edge-Cache $upstream_cache_status;
proxy_pass http://origin_pool;
}
}

9. 2 Lac: chei surogat и BAN

vcl sub vcl_recv {
if (req. method == "BAN") {
if (req. http. Surrogate-Key) {
ban("obj. http. Surrogate-Key ~ " + req. http. Surrogate-Key);
return (synth(200, "Banned"));
}
}
}

sub vcl_deliver {
set resp. http. Surrogate-Key = "article:42 tag:author:7";
set resp. http. Cache-Control = "public, s-maxage=300, stale-while-revalidate=60";
}

9. 3 Envoy (filtru memorie cache)

yaml http_filters:
- name: envoy. filters. http. cache typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. cache. v3. CacheConfig typed_config:
"@type": type. googleapis. com/envoy. extensions. http. cache. simple_http_cache. v3. SimpleHttpCacheConfig

9. 4 Comportament în stil CloudFront (miniatură)

Comportament A: '/images/' - TTL lung, compresie, variază în formate.
Comportament B: '/api/' - scurt TTL, SWR, cookie semnat, protecție WAF/bot.
Scutul de origine este activat, statusurile 500/502/504 → 'stale-if-error'.

10) Observabilitate, SLO și raportare

10. 1 Măsurători

cache_hit_ratio (după POP/regiune/rută), byte_hit_ratio.
origin_offload = 1 − (origin_requests/ edge_requests).
TTFB/TTL după cantități, stale_responses_total, revalidations_total.
stampede_prevented_total, coalesced_waiters.
shield_hit_ratio (dacă sunt pe niveluri), origin_egress_bytes (cost).

10. 2 Busteni/Trasee

Jurnalele etichetate "HIT/MISS/STALE/ACTUALIZARE/BYPASS', cheie, TTL, POP, chiriaș.
În urmele distribuite, marcați sursa ('edge', 'origin') și cauza (revalidate/stale/error).

10. 3 exemple SLO

„Для ”/api/list„: p99 TTFB ≤ 250 мс, lovit de margine ≥ 70%, lovit de octet ≥ 80%, eroare de origine-descărcare ≥ 90% ”.
„Rata răspunsurilor” stale-if-error „≤ de 1% pe zi”.

11) Securitate, confidențialitate, conformitate

WAF/bot management - pe margine pentru filtrarea la origine.
Regionalitatea datelor: stocați artefacte private numai în POP-uri valabile; Utilizați chei și ACL-uri specifice regiunii.
Semnături și jetoane pe margine, nu dau răspunsuri private din memoria cache publică.
Minimizarea PII: nu includeți datele cu caracter personal în chei; criptarea cookie-urilor; TTL-uri scurte pentru personalizare.

12) Rețete tipice

12. 1 „Aproape dinamic” (benzi/liste)

Micro-cache 1-3 cu + SWR pe margine, scut activat, un singur zbor, negativ-cache pentru rezultate goale 1-5 s.

12. 2 Imagini/Nori Media

Edge recise/formatare (WebP/AVIF), opțiuni de memorie cache prin „lățime/format”, TTL lung, dizabilitate prin tag-uri de conținut.

12. 3 API-uri cu personalizare

'Cache-Control: private' or semnat cookie + key-segmentare (chiriaș), TTL-uri scurte, SWR-uri pentru părți „aproape publice” ale răspunsului.

12. 4 vânzări mari/ponturi

Încălzirea resurselor cheie (prewarm), creșterea TTL pentru statică, SWR/SIE agresiv, limite dure pentru origine, Shield inclus.

13) Anti-modele

Nu 'Vary' cu răspunsuri diferite → scurgeri/date incorecte.
Imens 'Vary' → cardinalitate → lovitură scăzută.
Cache comun pentru prod/experimente → contaminare.
Nicio furtună → fără zbor nu ratează originea.
SWR fără restricții → actualizează cursele și validează cererile de avalanșă.
Memoria cache a răspunsurilor private ca incidente de securitate → publică.
Absența nivelurilor/scutului la încărcare la nivel mondial → supraîncălzire de origine.

14) Lista de verificare a implementării

  • Acoperire POP hartă, activați anycast + rutare latență.
  • Selectați politicile pe niveluri/scut și un singur zbor/coalescing.
  • Design chei și Vary (cardinalitate minimă, nu PII).
  • Configurați TTL/SWR/SIE (soft/hard TTL) și memoria cache negativă.
  • Activați URL-ul semnat/cookie, ascundeți originea, activați filtrele WAF/bot.
  • Organizați dizabilitatea: Surogat-Key/BAN + condus de evenimente.
  • Raise hit/byte-hit/offload/TTFB metrics and per-POP dashboards.
  • Warm-up înainte de vârfuri, runbooks pentru furtună/supraîncărcare.
  • Teste de confidențialitate/regionalitate, audituri cheie și de politică.
  • SLO/buget eronat pentru margine și TTL/SWR criterii auto-tweak.

15) ÎNTREBĂRI FRECVENTE

Î: Cum de a alege TTL pe margine?
R: Împingeți obiectivul obsolescenței admisibile și al raportului de succes. Pentru "near-dynamics' - 1-5 s + SWR; pentru directoare/imagini - minute/ore cu handicap după evenimente/etichete.

Î: Când este necesar Shield POP?
R: Cu trafic global sau chei fierbinți: scutul reduce dramatic ratările originii și stabilizează undele „de recuperare”.

Î: Cum pot cache răspunsurile autorizate?
R: Fie „privat” (browser), fie public cu cookie/URL semnat și segmentarea cheilor (fără PII), fie, în general, by-pass pentru datele personale critice.

Î: Ce să faci cu HTTP/3?
R: Activare: Mobile/lost channel câștigă în special. Controlați compatibilitatea proxy-ului și a rezervei pe HTTP/2.

16) Totaluri

Edge caches și rețeaua POP sunt fundamentul platformelor de mare viteză și economice. Succesul este determinat de cheia corectă și de „Vary”, TTL/SWR/SIE rezonabil, tag/eveniment handicap, niveluri/protecție de origine scut, precum și de observare (hit/offload/TTFB) și de securitate/disciplina de confidențialitate. Urmați lista de verificare - iar „marginea” va fi acceleratorul, nu o sursă de surprize.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.