CDN va edge keshlash
CDN va edge keshlash
1) Maqsadlar
CDN (Content Delivery Network) latentlik va origin yuklamasini kamaytiradi: edge-uzellardagi statik va shartli dinamik kontentni keshlaydi, ko’lami, barqarorligi va xavfsizligini ta’minlaydi (DDoS/WAF), edge-mantiqni qo’shadi (javoblarni/so’rovlarni qayta yozish, autentifikatsiyalash, A/B).
2) Keshlash modeli va kalitlari
Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`
Quyidagilar tavsiya etiladi:- Query (’utm _’chiqarib tashlansin,’v’,’lang’,’country’va hokazo qoldirilsin)
- ’Vary’ ni minimallashtirish (masalan,’Vary: Accept-Encoding, Accept-Language’),’Vary:’dan qochish.
- API uchun - yo’nalish kaliti + versiya identifikatori (semver, hash, build id) + kerakli query/headers (masalan,’X-Tenant’).
- Shaxsiylashtirilgan sahifalar uchun - edge-segmentatsiya (cookie/geo) yoki Skip-Cache.
3) TTL siyosati va sarlavhalari
Asosiy sarlavhalar:- `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
- ’Surrogate-Control’ (agar qoʻllab-quvvatlansa) - brauzerdan boshqa CDN uchun alohida siyosat.
- ’ETag ’/’ Last-Modified’ - shartli so’rovlar (304) va trafikni tejash.
- Xususiy uchun:’Cache-Control: private, no-store’, agar uni keshlash mumkin boʻlmasa.
- Cache-Control: public, s-maxage = 60’+ versiyasi boʻyicha kalit.
Tavsiya etilgan yondashuv: «abadiy» resurslar (fayl nomidagi fingerprint bilan) →’max-age = 31536000, immutable’; «sahifa/JSON» → qisqa TTL + SWR.
4) Nogironlik: purge/soft-purge
Purge by URL: nuqta.
Purge by tag/key: guruhli tozalash (’Surrogate-Key: products: 42 category: food’dan foydalaning).
Soft-purge: kontentni «eskirgan» deb belgilaydi, yangi versiya olingunga qadar edge stale beradi.
«Issiq» isitish: deploydan keyin asosiy sahifalarni hududlardan tortib oling.
5) Unumdorlik edge-patternlari
Stale-While-Revalidate: «eskirgan» nusxada tezkor javob + fon yangilanishi.
Kritik resurslar prefetch (preload, preconnect, dns-prefetch).
Compression: gzip/br (matn uchun), agar CDN qoʻllansa zstd.
HTTP/2/3 (QUIC): multiplekslash va kamroq latentlik.
TLS session resumption va OCSP stapling perimetrda.
6) Tasvirlar va 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 (markaziy kesh).
Shaxsiy rasmlar uchun Thumbnail xizmatlari va signed URLs.
7) Perimetr xavfsizligi
WAF: OWASP qoidalari, mamlakatlarni blokirovka qilish/ASN, rate-limits (IP + cookie + token).
DDoS: L3/4 scrubbing, L7-chekerlar, JS-challengi/turnstile.
Shaxsiy resurslar uchun imzolangan URL/cookie (video/hisobotlar): TTL + HMAC/EdDSA.
Geo-fencing va komplayens (masalan, hududlarni taqiqlash).
8) Edge-compute (chetidagi mantiq)
Keys:- Keshni buzmasdan shaxsiylashtirish: segmentlar (A/B), geo, til edge, kontent esa keshlash.
- Javoblar/sarlavhalarni qayta yozish, tahririyatlar, AB-splitlar.
- Tokenning autentifikatsiyasi: JWT imzosini tekshirish, kalitga bogʻlash.
- Canary boʻyicha cookie/percent: trafikning bir qismi - yangi backend.
Texnologiya namunalari: Cloudflare Workers/Durable Objects, Fastly Compute @Edge, AWS Lambda @Edge.
9) Multi-CDN va global perimetr
Sabablari: qoplash, SLA, qiymat, mintaqaviy cheklovlar, hodisalarni izolyatsiya qilish.
GSLB/Traffic Steering: geo/latency/real xatolar bo’yicha; bir nechta vantage nuqtalaridan health-checks.
Yagona kalit/sarlavha sxemasi (Surrogate-Key), sinxronlashtirilgan purge qoidalari.
Origin-shield barcha CDNlar uchun umumiy bo’lib, nogironlikda originni «urmaslik» uchun.
10) Logografiya va metrika
Yig’inglar:- Hit ratio (cache, CDN → edge/origin), byte hit ratio.
- Latency p50/p95/p99, error-rate kod/yo’nalish bo’yicha.
- Origin fetches: RPS/bayt/xatolar (ortiqcha xatolardan himoya qilish).
- Hududiy grafiklar (POP/ASN/mamlakat boʻyicha).
- Observability: Prometheus (eksport qiluvchilar orqali pull), Grafana/OTel (edge-loglardan push) bilan integratsiya qiling.
11) SEO и SPA/SSR
SWR va qisqa TTL bilan SEO sahifalari - tez va «yangi».
Sitemap/robots - uzoq vaqt kesh qiling, lekin soft-purge’ga ruxsat bering.
Service Worker: offline-keshlash, muhim yo’llar prefetch, maqsadli yangilanishlar.
12) Konfiguratsiyalar va sarlavhalar namunalari
12. 1 Cache-Control profillari
Fingerprint statikasi:
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 (kesh qilinadigan vitrin):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (origin) - normallashtirish query/headers
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 - soft-purge va kalitlar
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 - imzolangan 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) Xususiy ma’lumotlar va API
Hech qachon shaxsiy javoblarni kalitni izolyatsiya qilmasdan keshlamang (per-foydalanuvchi/per-token).
Signed Cookies/Headers va’Vary: Authorization’dan faqat qattiq nazorat ostida (aks holda cache-bust) foydalaning.
Xavfsiz muqobil: ommaviy qatlamni (kesh qilinadigan) va shaxsiy inklyudalarni (ESI/edge-kompozitsiya) ajrating.
14) Geo/kontent qoidalari
Litsenziya cheklovlari: geo-deny edge, pleysholderlar origin blokirovkasi o’rniga.
Yosh/tartibga soluvchi bannerlar - edge renderi (keshni yorib o’tmaslik).
15) Anti-patternlar
’no-cache, no-store’ butun sayt uchun → CDN effektini yoʻqotish.
Beqaror sarlavhalar boʻyicha’Vary’(masalan,’User-Agent’) → kardinallik.
Har bir chiqishda butun keshni tozalash.
SWR’siz qisqa TTL → origin’da «bo’ron».
Shaxsiy sahifalar segmentatsiya/token kalitlarisiz keshlanadi.
Origin-shield yo’qligi → bir nechta parallel xatolar.
16) Joriy etish chek-varaqasi (0-45 kun)
0-10 kun
Manbalarni toifalash: statika (immutable )/HTML/API.
gzip/br, HTTP/2/3, query,’Surrogate-Key’.
SWR/IFE va asosiy purge kiritilsin.
11-25 kun
Rasmlarni optimallashtirish (resize/format), origin-shield.
Shaxsiy media uchun imzolangan URL, WAF/DDoS profillari.
Dashbordlar: hit ratio, origin fetches, p95 bo’yicha POP.
26-45 kun
Multi-CDN yoki GSLB-strategiya, perimetrdagi kanar vazni.
/ AV/geo segmentatsiyasi uchun Edge-compute, kalitlar boʻyicha soft-purge.
Purge ni avtomatik isitish va CI/CDga integratsiyalash.
17) Etuklik metrikasi
Byte hit ratio ≥ statika uchun 85%, HTML/shartli dinamika uchun ≥ 60%.
Origin RPS choʻqqilarda barqaror («boʻron» yoʻq).
p95 TTFB asosiy hududlar boʻyicha 30% ≥ kamaytirildi.
Hodisalarda stale javoblarining%> 90% (foydalanuvchi deyarli sezmadi).
Reliz-payplaynda purge-kalitlarni toʻliq avtomatlashtirish.
18) Xulosa
CDN ning samarali konturi - bu kalitlar/TTL/variantlar, nogironlik intizomi va edge-mantiq. SWR/IFE, origin-shield, media optimallashtirish va qattiq xavfsizlikni (URL bilan imzolangan WAF) qoʻshing. Ko’rsatkichlarni standartlashtiring va purge’ni CI/CDga integratsiyalashtiring - va siz eng yuqori yuk va qora oqqushlarga tayyor bo’lgan tezkor, tejamkor va barqaror perimetrga ega bo’lasiz.