CDN жана edge кэш
CDN жана edge кэш
1) Максаттар
CDN (Content Delivery Network) жашыруун жана оригиналдуу жүктү азайтат: edge түйүндөрүндөгү статикалык жана шарттуу динамикалык мазмунду кэш, масштабды, туруктуулукту жана коопсуздукту камсыз кылат (DDoS/WAF), edge логикасын кошот (жоопторду/суроо-талаптарды кайра жазуу, аутентификация, A/B).
2) Кэш модели жана ачкычтар
Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`
сунуш кылынат:- query ('utm _' алынып салынсын, 'v', 'lang', 'country' ж.б.).
- Минималдаштыруу 'Vary' (мисалы, 'Vary: Accept-Encoding, Accept-Language'), качуу 'Vary:'.
- API үчүн - маршруттун ачкычы + ID версиясы (semver, hash, build id) + керектүү query/headers (мисалы, 'X-Tenant').
- Жекелештирилген барактар үчүн - edge-сегментация (cookie/гео) же Skip-Cache.
3) TTL саясаты жана аталыштары
Негизги аталыштар:- `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
- 'Surrogate-Control' (эгер колдоого алынса) - бул CDN үчүн браузерден башка өзүнчө саясат.
- 'ETag '/' Last-Modified' - шарттуу суроо-талаптар (304) жана трафикти үнөмдөө.
- Жеке менчик үчүн: 'Cache-Control: private, no-store', эгер кэш мүмкүн болбосо.
- кэш жол API: 'Cache-Control: public, s-maxage = 60' + версия ачкычы.
Сунушталган ыкма: "түбөлүк" ресурстар (файлдын аталышында fingerprint менен) → 'max-age = 31536000, immutable'; "барактар/JSON" → кыска TTL + SWR.
4) майыптыгы: purge/soft-purge
Purge by URL: так.
Purge by tag/key: топтук тазалоо (колдонуңуз 'Surrogate-Key: products: 42 category: food').
Soft-purge: мазмунду "эскирген" деп белгилейт, edge жаңы версиясын алганга чейин stale берет.
"Жылуу" жылытуу: deploi кийин аймактардын негизги беттерин алып.
5) Аткаруу үлгүлөрү
Stale-While-Revalidate: тез жооп "эскирген" көчүрмөсү + арткы жаңыртуу.
Prefetch критикалык ресурстар (preload, preconnect, dns-prefetch).
Compression: gzip/br (текст үчүн), zstd CDN тарабынан колдоого алынган болсо.
HTTP/2/3 (QUIC): multiplexing жана аз латенттүүлүк.
TLS сессия resumption жана OCSP периметри боюнча stapling.
6) Сүрөттөр жана Videos
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 (борбордук кэш) "бороон" азайтуу үчүн.
Thumbnail кызматтары жана жеке сүрөттөр үчүн URLs белгиси.
7) коопсуздук периметри
WAF: OWASP эрежелери, өлкөлөрдү бөгөттөө/ASN, ачкыч менен rate-limits (IP + cookie + token).
DDoS: L3/4 scrubbing, L7-текшерүү, JS-чакырыктар/turnstile.
Кол коюлган жеке ресурстар үчүн URL/cookie (Video/отчеттор): TTL + HMAC/EdDSA.
Geo-fencing жана комплаенс (мисалы, аймактарга тыюу салуу).
8) Edge-compute (четинде логика)
Кейстер:- Персонализация без пробуксовки кэш: сегменттер (A/B), гео, тил боюнча edge, жана мазмун - кэш.
- Жоопторду/аталыштарды кайра жазуу, редакторлор, AB-сплиттер.
- Токендик аутентификация: JWT колтамгасын текшерүү, ачкычка байлоо.
- Canary боюнча cookie/percent: трафиктин бир бөлүгү - жаңы backend.
Технологиянын мисалдары: Cloudflare Workers/Durable Objects, Fastly Compute @Edge, AWS Lambda @Edge.
9) Multi-CDN жана глобалдык периметри
Себептери: камтуу, SLA, наркы, аймактык чектөөлөр, окуяларды изоляциялоо.
GSLB/Traffic Steering: гео/latency/реалдуу каталар боюнча; бир нече vantage-пункттарынын ден соолук-текшерүү.
Бирдиктүү ачкычтар/аталыштар схемасы (Surrogate-Key), синхрондуу purge эрежелери.
Origin-shield бардык CDN үчүн жалпы болуп саналат "уруп" майыптыгы менен origin.
10) Логика жана метрика
Чогултуу:- Hit ratio (cache, CDN → edge/origin), byte hit ratio.
- Latency p50/p95/p99, error-rate код/маршрут боюнча.
- Origin fetches: RPS/байт/каталар (ашыкча каталарды коргоо).
- Аймактык графиктер (POP/ASN/өлкө боюнча).
- Observability менен бириктирүү: Prometheus (экспортерлор аркылуу pull), Grafana/OTel (edge-логдордон push).
11) SEO и SPA/SSR
SWR жана кыска TTL менен SEO барактар - тез жана "жаңы".
Sitemap/robots - көпкө кэш, бирок soft-purge жол.
Кызмат Worker: оффлайн кэширование, префетч критикалык жолдор, максаттуу жаңыртуулар.
12) Конфигурациялардын жана аталыштардын мисалдары
12. 1 Cache-Control профилдери
fingerprint менен статика:
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 (кэш дисплей):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (origin) - нормалдаштыруу 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 жана ачкычтар
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 - кол коюлган 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 - гео параметрлери
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) Жеке маалыматтар жана API
Эч качан жеке жоопторду ачкычты изоляциялоосуз кэш кылбаңыз (per-user/per-token).
Signed Cookies/Headers жана 'Vary: Authorization' колдонуңуз, катуу көзөмөл менен гана (болбосо - cache-bust).
Коопсуз альтернатива: коомдук катмарды (кэш) жана жеке инклюдаларды (ESI/edge-композиция) бөлүү.
14) Гео/мазмун эрежелери
Лицензиялык чектөөлөр: geo-deny боюнча edge, playsholders ордуна origin бөгөт коюу.
Курактык/жөнгө салуучу баннерлер - edge боюнча рендер (кэш тешип жок).
15) Анти-үлгүлөрү
'no-cache, no-store' бүт сайт үчүн → CDN эффектин жоготуу.
туруксуз аталыштары боюнча 'Vary' (мисалы, 'User-Agent') → кардиналдуулук.
Ар бир релизде кэштин баарын тазалоо.
SWR жок кыска TTL → origin боюнча "бороон".
Жеке баракчалар сегментация/токен ачкычтары жок кэшделет.
origin-shield → бир нече параллелдүү каталар жок.
16) киргизүү чек-тизмеси (0-45 күн)
0-10 күн
Ресурстарды категориялаштыруу: статика (immutable )/HTML/API.
gzip/br, HTTP/2/3, query нормалдаштыруу, 'Surrogate-Key' кирет.
SWR/IFE жана негизги purge киргизүү.
11-25 күн
Edge-сүрөттөрдү оптималдаштыруу (resize/format), origin-shield.
жеке медиа үчүн URL кол, WAF/DDoS профилдери.
Dashbord: hit ratio, origin fetches, p95 боюнча POP.
26-45 күн
Multi-CDN же GSLB стратегиясы, периметри боюнча канар салмагы.
Сегментация/АВ/гео үчүн Edge-compute, ачкычтар боюнча soft-purge.
Авто-жылытуу жана purge CI/CD интеграциясы.
17) Жетилүү метрикасы
Byte hit ratio ≥ 85% статика үчүн, ≥ 60% HTML/шарттуу динамикасы үчүн.
Origin RPS чокуларында туруктуу (эч кандай "бороон").
p95 TTFB негизги аймактарда ≥ 30% га төмөндөтүлгөн.
Инциденттерде stale жоопторунун%> 90% (колдонуучу дээрлик байкаган жок).
Толук автоматташтыруу purge-ачкычтар релиз-paypline.
18) Корутунду
Натыйжалуу CDN контур ачкычтары/TTL/параметрлери, майыптык тартиби жана edge-логика болуп саналат. SWR/IFE, origin-shield, медиа оптималдаштыруу жана катуу коопсуздук (WAF, кол URL) кошуу. Стандартташтыруу өлчөө жана CI/CD менен purge бириктирип - жана сиз жогорку жүктөрдү жана "кара ак куулар" даяр тез, үнөмдүү жана туруктуу периметрин алат.