Edge-keşlər və POP
1) POP nədir və niyə «kənar»
POP (Point of Presence) - coğrafi cəhətdən istifadəçiyə yaxın olan məzmun çatdırma şəbəkəsinin (CDN/edge) qovşağı. Edge-cache - aşağıdakıları azaldan birbaşa POP-da cavab saxlama təbəqəsi:- Gecikmə (müştəriyə az RTT).
- origin (offload) yükü və dəyəri.
- Regionlar/buludlar arasında trafik (egress-qənaət).
Edge yalnız cache deyil. Müasir POP L7 marşrutlaşdırma, WAF/bot filtrləri, rate-limit, A/B/kanarya, transformasiya və edge-compute (skriptlər/funksiyalar) dəstəkləyir.
2) Edge-caching arxitekturaları
2. 1 Düz vs çox səviyyəli (tiered)
Düz: hər POP origin gedir. Sadə, lakin origin üçün bahalı.
Tiered/Shield: POP → Shield POP (mərkəzi cache) → origin. Shield cache səhvləri yığır, origin üçün «çətir» yaradır.
2. 2 Regional seqmentlər
Caching domenlərini bölgələrə/yurisdiksiyalara (GDPR/məlumat lokalizasiyası) bölün.
Variant: «EU-only POPs» və «Global POPs», ayrı açarlar/qaydalar.
2. 3 Anycast + latency/geo-aware marşrutlaşdırma
Anycast BGP ilə yaxın POP müştəri gətirir.
Geo/latency-aware aktiv ölçmə RTT/səhvləri PR/regional hovuzlar arasında keçid edir.
3) Cache açarları, 'Vary', TTL və təravət
3. 1 Açar dizaynı
Sorğuları normallaşdırın: query parametrlərini sıralayın, səs-küyü (utm, ref) çıxarın.
Semantik oxları daxil edin: 'tenant', 'locale', «sxem versiyası» ('v = 3'), lakin PII-dən çəkinin.
Şəxsi məzmun üçün - ictimai və şəxsi keşləri bölmək (bax § 7).
3. 2 Caching Control (HTTP)
Başlıqlar:- `Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=60, stale-if-error=120`
- 'ETag '/' Last-Modified' şərti GET üçün (304).
- Vary: kardinallığı minimuma endirin ('Accept-Encoding', 'Accept-Language', bəzən 'Authorization '/' Cookie' xüsusi yollar üçün).
- «Demək olar ki, dinamika» üçün Micro-cache: 1-5 saniyə + SWR.
3. 3 Stale strategiya
SWR (stale-while-revalidate): köhnəlmiş cavab və fon yenilənir.
SIE (stale-if-error): Səhv olduqda origin 'SIE' -TTL-ə qədər cache istifadə edir.
Soft/Hard TTL: yumşaq müddət (stale ola bilər), sərt (tam səhv).
4) Əlillik: "kənar 'ı necə yeniləmək olar
4. 1 Açar və etiketlərə görə
URL/prefiksdə PURGE/BAN - kobud, lakin sürətli.
Surrogate-Key/Tags: obyektlərə etiketlər təyin edin ('article: 42', 'category: 7'), etiketlə bani - URL-lər olmadan kütləvi əlillik.
4. 2 Hadisə əlilliyi
Origin-də məlumatları dəyişdirdikdə (Kafka/NATS) → edge əlilləri BAN/PURGE/soft-expire çağırır.
4. 3 Artefaktların versiyası
Statika üçün - faylın adında content-hash.
API üçün - uyğunsuz dəyişikliklər zamanı açarın versiyasını ('v = 4') dəyişdirin.
5) origin qorunması və performans
5. 1 Origin shielding
Shield POP-u yeganə səhv nöqtəsi kimi yandırın → origin fırtınalarını bir neçə dəfə azaldır.
5. 2 Coalescing/single-flight
Kənarda bir sorğu səhv olduqda cache «sındırır»; qalanları gözləyir (heç bir tutmaq stampede).
5. 3 Rate-limit/Queue/Shedding на edge
Həddindən artıq yükləndikdə - aşağı prioritetli/anonim sorğuları origin-ə deyil, POP-a atın.
5. 4 Signed URL / Signed Cookie
Origin edge arxasında gizlidir. Xüsusi məzmuna giriş - «hamıya» paylanmamaq üçün TTL və atributları (IP/Geo/Path) olan imzalı linklər/kukilər vasitəsilə.
6) Nəqliyyat və transformasiya
6. 1 HTTP/2–3 и QUIC
HTTP/2: multiplexing, heder-kompression.
HTTP/3/QUIC: Daha az HOL kilidi və → p95/p99 TTFB-dən aşağı itirilmiş kanallarda daha yaxşıdır.
6. 2 Sıxılma və şəkillər
Mətn üçün Brotli, görüntülər üçün AVIF/WebP, kənarda image-resizing (responsive sizes, DPR).
Formata/ölçüyə görə cache variantları: açarlar 'width/format' (və ya 'Vary: Accept '/Client-Hints) daxildir.
6. 3 TLS/0-RTT (diqqətlə)
Recumpling seansları quraşdırma sürətləndirir, 0-RTT replay həssas ola bilər → yalnız idempotent GET üçün daxil edin.
7) Açıq vs xüsusi edge-keşi
7. 1 ictimai
'Cache-Control: public, s-maxage =...' və minimal 'Vary'.
Kataloq, xəbərlər, şəkillər, statik CDN üçün uyğundur.
7. 2 Xüsusi/Fərdi
Seçimlər:- «Cache-Control: private» (brauzer keşi).
- Key-segmentation: açara tenant/user-id (və ya token-hash) daxil edin və private-shared (saxlama və PII ilə diqqətlə) kimi qeyd edin.
- Signed cookies və Edge-auth: önbellək açıqdır, lakin imza ilə giriş (kənarda encrypted session state ilə variantları).
8) Edge-compute (Workers/Functions)
POP-da asan funksiyalar: yolların/başlıqların yenidən yazılması, A/B-split, açarların normallaşdırılması, SWR məntiqi, qonşu resursların prefetch.
Millisaniyəlik əməliyyatlar üçün POP-da lokal KV/Cache API.
Məhdudiyyətlər: qısa müddət/yaddaş, uzunömürlü əlaqələrin olmaması, PII/regional ilə diqqətli iş.
Psevdo-nümunə (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) Konfiqurasiya nümunələri
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 Varnish: surrogate keys и 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 (edge-cache filter)
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 CloudFront-stil davranış (eskiz)
Behavior A: '/images/' - uzun TTL, sıxılma, formatlara görə vary.
Behavior B: '/api/' - qısa TTL, SWR, signed cookie, WAF/bot qorunması.
Origin Shield daxildir, statuslar 500/502/504 → 'stale-if-error'.
10) Müşahidə, SLO və hesabat
10. 1 Metrika
cache_hit_ratio (POP/region/route), byte_hit_ratio.
origin_offload = 1 − (origin_requests / edge_requests).
TTFB/TTL kvantil, stale_responses_total, revalidations_total.
stampede_prevented_total, coalesced_waiters.
shield_hit_ratio (tiered ilə), origin_egress_bytes (dəyəri).
10. 2 Log/Treys
Etiketli qeydlər 'HIT/MISS/STALE/UPDATING/BYPASS', açar, TTL, POP, tenant.
Paylanmış treyslərdə mənbəni ('edge', 'origin') və səbəbini (revalidate/stale/error) qeyd edin.
10. 3 SLO nümunələri
«Для `/api/list`: p99 TTFB ≤ 250 мс, edge hit ≥ 70%, byte-hit ≥ 80%, origin error-offload ≥ 90%».
"Stale-if-error" cavablarının payı ≤ gündə 1% ".
11) Təhlükəsizlik, məxfilik, uyğunluq
WAF/bot menecmenti - origin filtrasiya edge.
Məlumatların regionallığı: şəxsi artefaktları yalnız icazə verilən POP-larda saxlayın; regional xüsusi açarlar və ACL istifadə edin.
edge-də imzalar və tokenlər, ictimai cache-dən şəxsi cavablar verməyin.
PII-minimallaşdırma: şəxsi məlumatları açarlara daxil etməyin; cookies şifrələyin; personalizasiya üçün qısa TTL.
12) Tipik reseptlər
12. 1 «Demək olar ki, dinamika» (lentlər/siyahılar)
edge + SWR ilə Micro-cache 1-3, shield aktiv, tək flight, 1-5 s boş nəticələr üçün negative-cache.
12. 2 Görüntü/Media buludları
Edge-resayz/formatlaşdırma (WebP/AVIF), 'width/format' cache variantları, uzun TTL, məzmun etiketlərinə görə əlillik.
12. 3 kişiselləşdirmə ilə API
'Cache-Control: private' və ya signed cookie + açar seqmentasiyası (tenant), qısa TTL, cavabın «demək olar ki, ictimai» hissələri üçün SWR.
12. 4 Böyük satış/zirvələri
Əsas qaynaqların istiləşməsi (prewarm), statik TTL artımı, təcavüzkar SWR/SIE, origin sərt limitləri, Shield daxil.
13) Anti-nümunələr
Fərqli cavablar olmadan 'Vary' → sızma/səhv məlumatlar.
Böyük 'Vary' → kardinallıq → aşağı hit.
prod/experiments → çirklənmə üçün ümumi cache.
origin heç bir single-flight → fırtına qaçırmaq.
SWR məhdudiyyətsiz → yarış yeniləmə və uçqun validate-sorğular.
public → təhlükəsizlik hadisələri kimi şəxsi cavabların Edge-cache.
Worldwide yük → həddindən artıq isti origin zamanı tiered/shield yoxdur.
14) Giriş çek siyahısı
- POP örtüyünü xəritələyin, anycast + latency-routing daxil edin.
- Tiered/shield və single-flight/coalescing siyasətlərini seçin.
- Açarları və Vary layihələndirin (minimum kardinallıq, PII olmadan).
- TTL/SWR/SIE (soft/hard TTL) və negative-cache.
- URL/cookie siqnalını açın, origini gizlədin, WAF/bot filtrlərini açın.
- Əlilliyi təşkil edin: Surrogate-Key/BAN + event-driven.
- hit/byte-hit/offload/TTFB metrləri və per-POP dashboard qaldırın.
- Pik əvvəl istiləşmə, fırtına/həddindən artıq yük runbooks.
- Məxfilik/regionallıq testləri, açar auditi və siyasət.
- SLO/edge üçün səhv büdcə və TTL/SWR auto twicks meyarları.
15) FAQ
Q: kənarında TTL seçmək üçün necə?
A: Icazə verilən köhnəlmə və hit-ratio hədəfindən uzaqlaşın. «Demək olar ki, dinamika» üçün - 1-5 s + SWR; məlumat kitabçaları/şəkillər üçün - hadisələr/etiketlər üzrə əlillik ilə dəqiqə/saat.
Q: Shield POP nə vaxt lazımdır?
A: Qlobal trafik və ya isti açarlar ilə: shield origin səhvlərini kəskin şəkildə azaldır və «tutma» dalğalarını sabitləşdirir.
Q: Səlahiyyətli cavabları necə önbelleğe almaq olar?
A: Ya 'private' (brauzer), ya da public ilə siqnal cookie/URL və açar seqmentasiyası (PII olmadan), və ya ümumiyyətlə kritik şəxsi məlumatlar üçün bypass.
Q: HTTP/3 ilə nə etmək lazımdır?
A: Daxil: xüsusilə mobil/itirilmiş kanal qazanır. HTTP/2 proxy və fallback uyğunluğunu nəzarət edin.
16) Nəticələr
Edge-keşlər və POP şəbəkəsi sürətli və qənaətli platformaların təməlidir. Uğur düzgün açar və 'Vary', ağlabatan TTL/SWR/SIE, etiket/hadisə əlilliyi, tiered/shield origin qorunması, həmçinin müşahidə (hit/offload/TTFB) və təhlükəsizlik/gizlilik intizamı ilə müəyyən edilir. Çek siyahısını izləyin və «kənar» sürprizlərin mənbəyi deyil, sürətləndiriciniz olacaq.