Kenar önbellekleri ve POP
1) POP nedir ve neden "kenar"
POP (Point of Presence), kullanıcıya coğrafi olarak yakın bir içerik dağıtım ağı (CDN/edge) düğümüdür. Kenar önbelleği - yanıtları doğrudan POP'ta depolayan bir katman, bu da şunları azaltır:- Gecikme (istemciden önce daha az RTT).
- Orijin başına yük ve maliyet (boşaltma).
- Bölgeler/bulutlar arasındaki trafik (çıkış tasarrufu).
Edge sadece bir önbellek değildir. Modern POP'lar L7 yönlendirme, WAF/bot filtreleri, hız sınırı, A/B/kanaryalar, dönüşümler ve kenar hesaplamayı (komut dosyaları/işlevler) destekler.
2) Kenar önbellekleme mimarileri
2. 1 Düz vs katmanlı
Düz: Her POP orijine gider. Basit ama orijin için pahalı.
Katmanlı/Kalkan: POP - Kalkan POP (merkezi önbellek) - orijin. Kalkan önbellek özlüyor biriktirir, kökeni için bir şemsiye oluşturur.
2. 2 Bölgesel segmentler
Bölgeye/yetki alanına göre ayrı önbellekleme alanları (GDPR/veri yerelleştirme).
Variant: "EU-only POPs've" Global POPs ", ayrı anahtarlar/kurallar.
2. 3 Anycast + latency/geo-aware yönlendirme
Anycast, müşteriyi BGP aracılığıyla en yakın POP'a getirir.
Etkin RTT/hata ölçümlerindeki POP/bölgesel havuzlar arasında coğrafi/gecikmeye duyarlı anahtarlar.
3) Önbellek tuşları, 'Vary', TTL ve tazelik
3. 1 Anahtar tasarımı
Sorguları normalleştirin: sorgu parametrelerini sıralayın, gürültüyü kaldırın (utm, ref).
Anlamsal eksenleri dahil edin: 'kiracı', 'yerel', 'şema sürümü' ('v = 3'), ancak PII'den kaçının.
Özel içerik için, genel ve özel önbelleği ayırın (bkz. § 7).
3. 2 Önbellek Kontrolü (HTTP)
Başlıklar:- 'Cache-Control: public, max-age = 60, s-maxage = 300, bayat while-revalidate = 60, bayat-if-error = 120'
- Koşullu GET'ler için 'ETag'/' Last-Modified' (304).
- Vary: kardinaliteyi en aza indirin ('Accept-Encoding', 'Accept-Language', bazen özel yollar için 'Authorization'/' Cookie').
- "Hoparlöre yakın" için mikro önbellek: 1-5 saniye + SWR.
3. 3 Bayat stratejiler
SWR (stale-while-revalidate): Eski bir cevap verin ve arka planla güncelleyin.
SIE (bayat-eğer-hata): Bir kaynak hatası durumunda, önbelleği 'SIE' -TTL'den önce kullanırız.
Yumuşak/Sert TTL: Yumuşak terim (bayatlayabilir), sert (tam özledim).
4) Engellilik: "kenar" nasıl güncellenir
4. 1 Tuşa ve etiketlere göre
URL/önek ile PURGE/BAN - kaba ama hızlı.
Vekil Anahtar/Etiketler: nesnelere etiketler atayın ('makale: 42', 'kategori: 7'), etiketle yasaklama - URL kaba kuvveti olmadan kitlesel engellilik.
4. 2 Olay sakatlığı
Orijindeki verileri değiştirirken, olayları yayınlayın (Kafka/NATS) - BAN/PURGE/soft-expire çağrısını devre dışı bırakın.
4. 3 Artifact sürüm oluşturma
Statik için - dosya adında content-hash.
API'ler için, uyumsuz değişiklikler için anahtar sürümünü ('v = 4') değiştirin.
5) Orijin koruması ve performansı
5. 1 Origin ekranlama
Shield POP'u tek bir özledim noktası olarak açın - fırtınayı orijine göre çarpın.
5. 2 Birleştirici/tek uçuş
Kenarda, bir istek bir ıskalamada önbelleği "yumruklar"; Geri kalanı bekleyin (yakalama izdihamı yok).
5. 3 Hız sınırı/Kuyruk/Dökülme на kenarı
Aşırı yüklendiyse, düşük öncelikli/anonim istekleri POP'a bırakın, orijine değil.
5. 4 İmzalı URL/İmzalı Çerez
Köken kenarın arkasında gizli. Özel içeriğe erişim - TTL ve özniteliklere (IP/Geo/Path) sahip imzalı bağlantılar/çerezler ile, "herkese" dağıtmamak için.
6) Ulaşım ve dönüşüm
6. 1 HTTP/2-3 и QUIC
HTTP/2: çoğullama, başlık sıkıştırma.
HTTP/3/QUIC: p95/p99 TTFB'nin altındaki kayıp kanallarda daha az HOL kilidi ve daha iyi.
6. 2 Sıkıştırma ve görüntü
Metin için Brotli, görüntüler için AVIF/WebP, kenarda görüntü yeniden boyutlandırma (duyarlı boyutlar, DPR).
Biçim/boyuta göre önbellek çeşitleri: anahtarlar arasında 'width/format' (veya 'Vary: Accept'/Client-Tips) bulunur.
6. 3 TLS/0-RTT (temiz)
Oturum tekrarlama kurulumu hızlandırır, 0-RTT tekrarlamaya karşı savunmasız olabilir - yalnızca idempotent GET'ler için etkinleştirin.
7) Genel ve özel kenar önbellek
7. 1 Kamu
'Cache-Control: public, s-maxage =... 've minimal 'Varye'
Katalog, haber, resim, CDN statik için uygundur.
7. 2 Özel/Kişiselleştirilmiş
Seçenekler:- Paylaşılan düzeyde önbelleğe almayın: 'Cache-Control: private' (tarayıcı önbelleği).
- Anahtar bölümleme: anahtara kiracı/kullanıcı kimliği (veya token-hash) ekleyin ve özel paylaşımlı olarak işaretleyin (depolama ve PII'ye dikkat edin).
- İmzalı çerezler ve Edge-auth: önbelleği herkese açıktır, ancak imzayla erişim (kenarda şifreli oturum durumu olan seçenekler).
8) Kenar hesaplama (İşçiler/Fonksiyonlar)
POP'ta kolay işlevler: yolu/başlıkları yeniden yazma, A/B bölme, anahtar normalleştirme, SWR mantığı, komşu kaynakların ön ayarı.
Milisaniye işlemleri için POP'ta Yerel KV/Önbellek API'si.
Sınırlamalar: Kısa zaman aşımları/bellek, uzun ömürlü bağlantıların olmaması, PII/bölgesellik ile dikkatli çalışma.
Sözde örnek (İşçi benzeri)
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) Yapılandırma örnekleri
9. 1 Nginx: mikro önbellek + 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 Vernik: vekil anahtarlar и 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 Elçi (kenar önbellek filtresi)
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 tarzı davranış (küçük resim)
Davranış A:'/images/' - uzun TTL, sıkıştırma, biçimlerde değişir.
Davranış B:'/api/' - kısa TTL, SWR, imzalı çerez, WAF/bot koruması.
Origin Shield etkin, durumlar 500/502/504 - 'bayat-if-error'.
10) Gözlemlenebilirlik, SLO ve raporlama
10. 1 Metrikler
cache_hit_ratio (POP/bölge/rota ile), byte_hit_ratio.
origin_offload = 1 − (origin_requests/ edge_requests).
Niceliklere göre TTFB/TTL, stale_responses_total, revalidations_total.
, .
shield_hit_ratio (katmanlı ise), origin_egress_bytes (maliyet).
10. 2 Günlükleri/yollar
'HIT/MISS/STALE/UPDATING/BYPASS' etiketli loglar, anahtar, TTL, POP, kiracı.
Dağıtılmış izlerde kaynağı ('edge', 'origin') ve nedeni (revalidate/stale/error) işaretleyin.
10. 3 SLO örneği
"Для'/api/list ': p99 TTFB ≤ 250 мс, kenar isabeti ≥ %70, bayt isabeti ≥ %80, orijin hata aktarımı ≥ %90".
"'Bayat-eğer-hata' yanıtlarının oranı günde %1 ≤".
11) Güvenlik, gizlilik, uyumluluk
WAF/bot yönetimi - orijine filtreleme için kenarda.
Verilerin bölgeselliği: özel eserleri yalnızca geçerli POP'larda depolayın; Bölgeye özgü anahtarlar ve ACL'ler kullanın.
Kenardaki imzalar ve belirteçler, genel önbellekten özel cevaplar vermez.
PII minimizasyonu: kişisel verileri anahtarlara dahil etmeyin; Çerezleri şifreleyin; Kişiselleştirme için kısa TTL'ler.
12) Tipik tarifler
12. 1 "Neredeyse dinamik" (kasetler/listeler)
Mikro önbellek 1-3, + SWR kenarlı, kalkan etkin, tek uçuşlu, boş sonuçlar için negatif önbellek 1-5 s.
12. 2 Görüntü/Medya Bulutları
Kenar özetleme/biçimlendirme (WebP/AVIF), 'genişlik/biçim'e göre önbellek seçenekleri, uzun TTL, içerik etiketlerine göre engellilik.
12. Kişiselleştirme özelliğine sahip 3 API
'Cache-Control: private' veya signed cookie + key-segmentation (tenant), short TTLs, SWRs for "almost public" parts of the response.
12. 4 Büyük satış/Picks
Temel kaynakların ısıtılması (ön warm), statikler için TTL'nin artırılması, agresif SWR/SIE, menşe için sert sınırlar, Kalkan dahil.
13) Anti-desenler
Farklı yanıtlarla 'Vary' yok - sızıntılar/yanlış veriler.
Büyük 'Vary' - kardinalite - düşük isabet.
Prod/deneyler için ortak önbellek - kirlenme.
Tek uçuş yok - fırtına orijinde özlüyor.
Kısıtlama olmadan SWR - güncelleme yarışları ve çığ doğrulama istekleri.
Özel yanıtların kenar önbelleği, genel güvenlik olayları olarak.
Dünya çapında yükte katmanlı/kalkanın yokluğu - menşei aşırı ısınma.
14) Uygulama kontrol listesi
- POP kapsamını haritalayın, anycast + latency-routing özelliğini etkinleştirin.
- Katmanlı/kalkan ve tek uçuş/birleştirme politikalarını seçin.
- Tasarım anahtarları ve Vary (minimum kardinalite, PII yok).
- TTL/SWR/SIE (yumuşak/sert TTL) ve negatif önbelleği yapılandırın.
- İmzalı URL/çerezi etkinleştir, kaynağı gizle, WAF/bot filtrelerini etkinleştir.
- Engellilik organize: Vekil-Key/BAN + olay odaklı.
- Hit/byte-hit/offload/TTFB metriklerini ve per-POP panolarını yükseltin.
- Zirvelerden önce ısınma, fırtına/aşırı yüklenmeye runbooks.
- Gizlilik/bölgesellik testleri, anahtar ve politika denetimleri.
- Kenar ve TTL/SWR otomatik tweak kriterleri için SLO/hatalı bütçe.
15) SSS
S: Kenardaki TTL nasıl seçilir?
C: İzin verilen eskime ve isabet oranı hedefini itin. "Yakın dinamikler" için - 1-5 s + SWR; Dizinler/görüntüler için - etkinlikler/etiketlerle engelli dakikalar/saatler.
S: Shield POP ne zaman gerekli?
C: Küresel trafik veya kısayol tuşları ile: kalkan, orijindeki ıskaları önemli ölçüde azaltır ve "yakalama" dalgalarını stabilize eder.
S: Yetkili yanıtları nasıl önbelleğe alırım?
C: 'Özel' (tarayıcı) veya imzalı çerez/URL ve anahtar segmentasyonu (PII olmadan) ile genel veya genellikle kritik kişisel veriler için bypass.
S: HTTP/3 ile ne yapmalı?
A: Etkinleştir: Özellikle mobil/kayıp kanal kazanır. HTTP/2 proxy ve fallback uyumluluğunu kontrol edin.
16) Toplam
Edge önbellekler ve POP ağı, yüksek hızlı ve ekonomik platformların temelidir. Başarı, doğru anahtar ve 'Vary', makul TTL/SWR/SIE, etiket/olay sakatlığı, katmanlı/kalkan kökenli koruma, ayrıca gözlem (hit/offload/TTFB) ve güvenlik/gizlilik disiplini ile belirlenir. Kontrol listesini takip edin - ve "kenar'bir sürpriz kaynağı değil, hızlandırıcınız olacaktır.