CDN ve kenar önbelleğe alma
CDN ve kenar önbelleğe alma
1) Hedefler
CDN (Content Delivery Network - İçerik Teslim Ağı) gecikmeyi ve orijinde yükü azaltır: kenar düğümlerinde statik ve koşullu olarak dinamik içeriği önbelleğe alır, ölçek, kararlılık ve güvenlik sağlar (DDoS/WAF), kenar mantığı ekler (yanıtları/istekleri yeniden yazma, kimlik doğrulama, A/B).
2) Önbellek modeli ve anahtarları
Ключ кеша = 'scheme + host + path +? (selected query params) + headers (Vary)'
Tavsiye edilen:- Sorguyu normalleştir ('utm _' dışla,' v 'bırak,' lang ',' ülke ', vb.).
- 'Vary' değerini en aza indirin (örneğin, 'Vary: Accept-Encoding, Accept-Language'), 'Vary:'den kaçının.
- API için - route + version tanımlayıcısından anahtar (semver, hash, build id) + gerekli sorgu/başlıklar (örneğin, 'X-Tenant').
- Kişiselleştirilmiş sayfalar için - kenar segmentasyonu (çerez/coğrafi olarak) veya Skip-Cache.
3) TTL politikaları ve başlıkları
Temel başlıklar:- 'Cache-Control: public, max-age = 300, s-maxage = 3600, bayat while-revalidate = 60, bayat-if-error = 300'
- 'Surrogate-Control' (destekleniyorsa), tarayıcı dışındaki CDN'ler için ayrı bir politikadır.
- 'ETag'/' Last-Modified' - koşullu istekler (304) ve trafik tasarrufu.
- Private için: 'Cache-Control: private, no-store', eğer önbelleğe alınmazsa.
- Önbelleğe izin veren API'ler: 'Cache-Control: public, s-maxage = 60' + sürüm anahtarı.
Önerilen yaklaşım: "Ebedi" kaynaklar (dosya adında parmak izi ile) - 'max-age = 31536000, değişmez'; "Pages/JSON" - kısa TTL + SWR.
4) Engellilik: temizleme/yumuşak temizleme
URL'ye göre temizle: noktasal.
Etiketle/tuşla temizle: grup tasfiyeleri ('Vekil Anahtar: ürünler: 42 kategori: yiyecek' kullanın).
Yumuşak temizleme: içeriği "modası geçmiş'olarak işaretler, kenar yeni bir sürüm alınana kadar bayat verir.
"Sıcak" ısınma: dağıtımdan sonra, ana sayfaları bölgelerden çekin.
5) Kenar performans kalıpları
Bayat-While-Revalidate: "modası geçmiş" kopya + arka plan güncellemesi ile hızlı yanıt.
Kritik kaynakların prefetch'i (ön yükleme, preconnect, dns-prefetch).
Sıkıştırma: gzip/br (metin için), CDN destekleniyorsa zstd.
HTTP/2/3 (QUIC): çoğullama ve daha az gecikme.
TLS oturumu devam ediyor ve OCSP çevre üzerinde zımbalanıyor.
6) Resimler ve videolar
Kenarda görüntü optimizasyonu: yeniden boyutlandırma/biçimlendirme anlaşması ('Accept: image/avif, webp'), авто -WebP/AVIF, DPR- варианты.
Lazy-load и responsive ('srcset', 'boyutlar').
Video: Fırtınaları azaltmak için HLS/DASH, parçalı MP4, origin-shield (merkezi önbellek).
Küçük resim hizmetleri ve özel resimler için imzalı URL'ler.
7) Çevre güvenliği
WAF: OWASP kuralları, ülke/ASN engelleme, anahtarlı hız limitleri (IP + çerez + belirteç).
DDoS: L3/4 ovma, L7 dama, JS zorlukları/turnike.
Özel kaynaklar için imzalı URL'ler/çerezler (video/raporlar): TTL + HMAC/EdDSA.
Geo-eskrim ve uygunluk (örneğin, bölgelerin yasaklanması).
8) Kenar hesaplama (kenardaki mantık)
Durumlar:- Önbelleği bozmadan kişiselleştirme: segmentler (A/B), coğrafi konum, kenardaki dil ve içerik önbelleğe alınır.
- Cevapları/başlıkları yeniden yazma, yönlendirmeler, AB bölünmeleri.
- Belirteç tabanlı kimlik doğrulama: JWT imza doğrulama, anahtar bağlama.
- Kanarya çerez/yüzde: yeni arka uç trafiğinin bir parçası.
Teknoloji örnekleri arasında Cloudflare Workers/Durable Objects, Fastly Compute @ Edge, AWS Lambda @ Edge sayılabilir.
9) Çoklu CDN ve küresel çevre
Nedenleri: kapsama, SLA, maliyet, bölgesel kısıtlamalar, olayların izolasyonu.
GSLB/Trafik Yönlendirme: coğrafi/gecikme/gerçek hatalarda; Birçok noktadan sağlık kontrolleri.
Tek anahtar/başlık şeması (Surrogate-Key), senkronize temizleme kuralları.
Köken kalkanı, köken engelli "vurmak" için tüm CDN'lerde ortaktır.
10) Günlük kaydı ve metrikler
Toplayın:- Vuruş oranı (önbellek, CDN ™ kenar/orijin), bayt isabet oranı.
- Gecikme süresi p50/p95/p99, kod/rota ile hata oranı.
- Origin getirileri: RPS/bytes/errors (gereksiz özlemeye karşı koruma).
- Bölgesel grafikler (POP/ASN/ülkeye göre).
- Gözlenebilirlik ile Entegre: Prometheus (ihracatçılar aracılığıyla çekme), Grafana/OTel (kenar günlüklerinden itme).
11) SEO и SPA/SSR
SWR ve kısa TTL ile SEO sayfaları hızlı ve taze.
Site haritası/robotlar - uzun süre önbelleğe alıyoruz, ancak yumuşak temizlemeye izin veriyoruz.
Service Worker: çevrimdışı önbelleğe alma, kritik yolların önceden belirlenmesi, hedeflenen güncellemeler.
12) Örnek yapılandırmalar ve başlıklar
12. 1 Önbellek-Kontrol profilleri
Parmak izi ile statik:
Cache-Control: public, max-age=31536000, immutable
HTML/SSR:
Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (önbelleğe alınmış vitrin):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (origin) - sorgu/başlıklar normalleştirme
nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^ &)v=([a-z0-9]+)(& $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";
12. 3 Fastly VCL - yumuşak temizleme ve anahtarlar
vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}
12. 4 Cloudflare Workers - İmzalı URL'ler
js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}
12. 5 Lambda @ Edge - Coğrafi Seçenekler
js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value 'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};
13) Özel veriler ve API
Anahtar yalıtımı olmadan özel yanıtları asla önbelleğe almayın (kullanıcı başına/belirteç başına).
İmzalı Çerezleri/Başlıkları ve 'Vary: Authorization'ı yalnızca sıkı denetimle kullanın (aksi takdirde - önbellek-büstü).
Güvenli alternatif: genel katmanı (önbelleğe alınmış) ve özel kapanımları (ESI/kenar bileşimi) ayırın.
14) Coğrafi/içerik kuralları
Lisanslama kısıtlamaları: kenarda coğrafi reddetme, kaynağı engellemek yerine yer tutucular.
Yaş/düzenleyici afişler - kenarda render (önbelleği delmeyin).
15) Anti-desenler
Tüm site için 'önbellek yok, mağaza yok' - CDN etkisinin kaybı.
Kararsız başlıklarda 'Vary' (örneğin, 'User-Agent') - kardinalite.
Her sürümde tüm önbelleği temizleyin.
SWR'siz kısa TTL'ler - kökene fırtına.
Kişisel sayfalar segmentasyon/belirteç anahtarları olmadan önbelleğe alınır.
Origin-shield eksikliği - çoklu paralel özlüyor.
16) Uygulama kontrol listesi (0-45 gün)
0-10 gün
Kaynakları kategorize edin: değişmez/HTML/API.
Gzip/br, HTTP/2/3, sorgu normalleştirmeyi etkinleştir, 'Vekil-Anahtar'.
SWR/IFE ve temel temizleme girin.
11-25 gün
Kenar görüntü optimizasyonu (yeniden boyutlandırma/format), origin-shield.
Özel medya, WAF/DDoS profilleri için imzalı URL'ler.
Panolar: isabet oranı, orijin getirileri, POP tarafından p95.
26-45 gün
Multi-CDN veya GSLB stratejisi, çevrede kanarya ağırlıkları.
Bölümleme/AB/geo için kenar hesaplama, tuşlarla yumuşak temizleme.
CI/CD'de otomatik ısınma ve temizleme entegrasyonu.
17) Olgunluk metrikleri
Bayt isabet oranı statik için %85 ≥ HTML/koşullu dinamikler için %60 ≥.
Origin RPS zirvelerde stabil ("fırtına" yok).
P95 TTFB, büyük bölgelerde ≥ %30 azaldı.
Olaylar için eski yanıtların %'si> %90 (kullanıcı zar zor fark edildi).
Serbest bırakma boru hatlarında temizleme anahtarlarının tam otomasyonu.
18) Sonuç
Etkili CDN devresi anahtarlar/TTL/seçenekler, engelli disiplini ve kenar mantığıdır. SWR/IFE, origin-shield, ortam optimizasyonu ve güçlü güvenlik (WAF, imzalı URL'ler) ekleyin. Metrikleri standartlaştırın ve temizlemeyi CI/CD'ye entegre edin - ve en yüksek yükler ve siyah kuğular için hazır, hızlı, ekonomik ve istikrarlı bir çevre elde edersiniz.