CDN və edge-caching
CDN və edge-caching
1) Məqsədlər
CDN (Content Delivery Network) gizliliyi və origin yükünü azaldır: edge qovşaqlarında statik və şərti dinamik məzmunu keşləşdirir, miqyas, sabitlik və təhlükəsizliyi təmin edir (DDoS/WAF), edge məntiqi əlavə edir (cavabların/sorğuların yenidən yazılması, autentifikasiya, A/B).
2) Caching modeli və açarları
Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`
Tövsiyə olunur:- Query-i normallaşdırın ('utm _' çıxarın, 'v', 'lang', 'country' və s.).
- 'Vary' -ni minimuma endirin (məsələn, 'Vary: Accept-Encoding, Accept-Language'), 'Vary:' -dən çəkinin.
- API üçün - marşrutdan açar + versiyanın identifikatoru (semver, hash, build id) + lazımi query/headers (məsələn, 'X-Tenant').
- Fərdi səhifələr üçün - edge seqmentasiyası (cookie/geo) və ya Skip-Cache.
3) TTL siyasətləri və başlıqlar
Əsas başlıqlar:- `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
- 'Surrogate-Control' (dəstəklənərsə) - brauzerdən fərqli bir CDN siyasətidir.
- 'ETag '/' Last-Modified' - şərti sorğular (304) və trafikə qənaət.
- Şəxsi üçün: 'Cache-Control: private, no-store', əgər cache etmək mümkün deyilsə.
- API cache imkan verir: 'Cache-Control: public, s-maxage = 60' + versiyası açar.
Tövsiyə olunan yanaşma: «əbədi» resurslar (fayl adında fingerprint ilə) → 'max-age = 31536000, immutable'; «səhifələr/JSON» → qısa TTL + SWR.
4) Əlillik: purge/soft-purge
Purge by URL: nöqtəli.
Purge by tag/key: qrup təmizləmələri ('Surrogate-Key: products: 42 category: food' istifadə edin).
Soft-purge: «köhnəlmiş» məzmunu qeyd edir, edge yeni versiya alınana qədər stale verir.
«İsti» istiləşmə: deploydan sonra əsas səhifələri bölgələrdən çəkin.
5) Edge performans nümunələri
Stale-While-Revalidate: «köhnəlmiş» nüsxə ilə sürətli cavab + fon yeniləmə.
Kritik resursların prefetch (preload, preconnect, dns-prefetch).
Compression: gzip/br (mətn üçün), zstd CDN tərəfindən dəstəklənərsə.
HTTP/2/3 (QUIC): multiplex və daha az gecikmə.
TLS session resumption və OCSP perimetri stapling.
6) Şəkillər və videolar
Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Video: HLS/DASH, fragmented MP4, origin-shield (mərkəzi cache) «fırtına» azaltmaq üçün.
Thumbnail xidmətləri və şəxsi görüntülər üçün işarəli URL.
7) Perimetr təhlükəsizliyi
WAF: OWASP qaydaları, ölkələrin bloklanması/ASN, açar ilə rate-limits (IP + cookie + token).
DDoS: L3/4 scrubbing, L7-checker, JS-challenge/turnstile.
Şəxsi resurslar üçün imzalanmış URL/cookies (video/hesabatlar): TTL + HMAC/EdDSA.
Geo-fencing və uyğunluq (məsələn, bölgələrin qadağan edilməsi).
8) Edge-compute (kənarda məntiq)
Cases:- Kəsilmədən cache personalization: seqmentlər (A/B), geo, dil edge və məzmun - cached.
- Cavabların/başlıqların yenidən yazılması, redaktorlar, AB-split.
- Token autentifikasiyası: JWT imzasının yoxlanılması, açarın bağlanması.
- Canary cookies/percent: trafikin bir hissəsi - yeni backend.
Texnologiya nümunələri: Cloudflare Workers/Durable Objects, Fastly Compute @Edge, AWS Lambda @Edge.
9) Multi-CDN və qlobal perimetr
Səbəbləri: əhatə dairəsi, SLA, dəyəri, regional məhdudiyyətlər, hadisələrin izolyasiyası.
GSLB/Traffic Steering: geo/latency/real səhvlər üzrə; bir neçə vantage nöqtələrindən sağlamlıq-yoxlamalar.
Vahid açar/başlıq sxemi (Surrogate-Key), sinxronlaşdırılmış purge qaydaları.
Origin-shield əlilliyi ilə origin «vurmaq» deyil, bütün CDN üçün ümumi.
10) Loging və metrika
Yığın:- Hit ratio (cache, CDN → edge/origin), byte hit ratio.
- Latency p50/p95/p99, error-rate kod/marşrut.
- Origin fetches: RPS/bayt/səhvlər (həddindən artıq səhvlərdən qorunma).
- Regional qrafiklər (POP/ASN/ölkə üzrə).
- Observability ilə inteqrasiya edin: Prometheus (ixracatçılar vasitəsilə pull), Grafana/OTel (edge-loqlardan push).
11) SEO и SPA/SSR
SWR və qısa TTL ilə SEO səhifələri - tez və «təzə».
Sitemap/robots - uzun müddət önbellək, lakin yumşaq purge icazə.
Xidmət Worker: offline-caching, kritik yollar prefetch, hədəf yeniləmələr.
12) Konfiqurasiya və başlıq nümunələri
12. 1 Cache-Control profilləri
fingerprint ilə 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 (cached vitrin):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (origin) - query/headers normallaşması
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 - yumşaq purge və açarlar
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 - imzalanmış URL
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 - Geo variantları
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) Şəxsi məlumatlar və API
Heç vaxt xüsusi cavabları açarı təcrid etmədən (per-user/per-token) cache etməyin.
Signed Cookies/Headers və 'Vary: Authorization' yalnız ciddi nəzarət altında istifadə edin (əks halda - cache-bust).
Təhlükəsiz alternativ: ictimai təbəqəni (cached) və şəxsi inkludları (ESI/edge kompozisiyası) bölün.
14) Geo/məzmun qaydaları
Lisenziya məhdudiyyətləri: edge geo-deny, origin kilidi əvəzinə playsholders.
Yaş/tənzimləyici bannerlər - edge-də render (cache-dən keçməyin).
15) Anti-nümunələr
'no-cache, no-store' bütün site üçün → CDN effekti itkisi.
Qeyri-sabit başlıqlara görə 'Vary' (məsələn, 'User-Agent') → kardinallıq.
Hər buraxılışda bütün cache təmizlənməsi.
SWR olmadan qısa TTL → origin «fırtına».
Şəxsi səhifələr seqmentasiya/token açarları olmadan keşləşdirilir.
Origin-shield → bir neçə paralel səhv yoxdur.
16) Giriş çek siyahısı (0-45 gün)
0-10 gün
Resursları kateqoriya: statik (immutable )/HTML/API.
gzip/br, HTTP/2/3, query normallaşdırılması, 'Surrogate-Key' daxil edin.
SWR/IFE və əsas purge daxil edin.
11-25 gün
Edge-image optimizasiyası (resize/format), origin-shield.
Şəxsi media üçün imzalanmış URL, WAF/DDoS profilləri.
Dashboard: hit ratio, origin fetches, p95 POP.
26-45 gün
Multi-CDN və ya GSLB strategiyası, perimetrdə kanarya çəkisi.
/ AV/geo seqmentasiyası üçün Edge-compute, açarları yumşaq-purge.
Avtomatik qızdırma və CI/CD purge inteqrasiya.
17) Yetkinlik metrikası
Byte hit ratio ≥ 85% statika üçün, ≥ 60% HTML/şərti dinamika üçün.
Origin RPS zirvə sabit (heç bir «fırtına»).
p95 TTFB əsas bölgələrdə 30% ≥ azaldılıb.
% stale hadisə cavabları> 90% (istifadəçi demək olar ki, fərq etmədi).
Buraxılış payplaynda purge-açar tam avtomatlaşdırma.
18) Nəticə
Effektiv CDN konturu açarlar/TTL/variantları, əlillik intizamı və edge-məntiqdir. SWR/IFE, origin-shield, media optimizasiyası və ciddi təhlükəsizlik (WAF, imzalanmış URL) əlavə edin. Metrləri standartlaşdırın və purge-ni CI/CD-yə inteqrasiya edin - və pik yüklərə və qara qu quşlarına hazır sürətli, qənaətli və davamlı bir perimetr əldə edəcəksiniz.