Edge кэштер жана POP
1) Эмне POP жана эмне үчүн "чети"
POP (Point of Presence) - колдонуучуга географиялык жактан жакын контент жеткирүү түйүнү (CDN/edge). Edge кэш - жоопторду сактоо катмары түздөн-түз POP, бул төмөндөтөт:- Латентность (кардарга RTT аз).
- origin (offload) боюнча жүк жана наркы.
- Аймактар/булуттар ортосундагы трафик (egress-үнөмдөө).
Edge бир гана кэш эмес. Заманбап POP колдойт L7-багыттоо, WAF/бот чыпкалар, rate-limit, A/B/канарейка, трансформация жана edge-compute (скрипттер/функциялар).
2) edge кэш архитектурасы
2. 1 жалпак vs көп баскычтуу (tiered)
жалпак: ар бир POP origin барат. Жөнөкөй, бирок origin үчүн кымбат.
Tiered/Shield: POP → Shield POP (борбордук кэш) → origin. Shield кэш-каталарды топтоп, origin үчүн "кол чатыр" түзөт.
2. 2 Аймактык сегменттер
Региондор/юрисдикциялар боюнча кэш домендерди бөлүңүз (GDPR/маалыматтарды локализациялоо).
Вариант: "EU-only POPs" жана "Global POPs", өзүнчө ачкычтар/эрежелер.
2. 3 Anycast + latency/geo-aware роутинг
Anycast BGP боюнча жакынкы POP кардар алып келет.
Geo/latency-aware активдүү өлчөө RTT/ката PR/региондук көлмөлөрдүн ортосунда которулат.
3) Кэш ачкычтары, 'Vary', TTL жана сергектик
3. 1 ачкыч дизайны
Суроо-талаптарды нормалдаштыруу: query параметрлерин сорттоо, ызы-чууну алып салуу (utm, ref).
Семантикалык окторду киргизиңиз: 'tenant', 'locale', "схеманын версиясы" ('v = 3'), бирок PIIден качыңыз.
Жеке мазмун үчүн - коомдук жана жеке кэштерди бөлүү (караңыз § 7).
3. 2 Кэш башкаруу (HTTP)
Аталыштары:- `Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=60, stale-if-error=120`
- шарттуу GET үчүн 'ETag '/' Last-Modified' (304).
- Vary: кардиналдуулугун азайтуу ('Accept-Encoding', 'Accept-Language', кээде 'Authorization '/' Cookie' жеке жолдор үчүн).
- Micro-cache үчүн "дээрлик динамика": 1-5 секунд + SWR.
3. 3 Stale стратегиясы
SWR (stale-while-revalidate): эскирген жооп жана өбөлгөлөр.
SIE (stale-if-error): Эгерде origin ката болсо, кэшти 'SIE' -TTL чейин колдонобуз.
Soft/Hard TTL: жумшак мөөнөтү (болот stale), катуу (толук ката).
4) Майыптык: "четин" кантип жаңылоо керек
4. 1 Ачкыч жана тегдер боюнча
PURGE/BAN URL/префикс - орой, бирок тез.
Surrogate-Key/Tags: объекттерди белгилөө Tags ('article: 42', 'category: 7'), тег боюнча тыюу салуу - массалык майып жок URL.
4. 2 Окуялардын майыптыгы
origin окуяларды жарыялоо маалыматтарды өзгөртүүдө (Kafka/NATS) → edge-майыптар BAN/PURGE/soft-expire чакырат.
4. 3 Экспонаттарды чыгаруу
Статика үчүн - файлдын аталышындагы content-hash.
API үчүн - шайкеш келбеген өзгөрүүлөрдө ачкычтын версиясын ('v = 4') өзгөртүңүз.
5) origin коргоо жана аткаруу
5. 1 Origin shielding
Shield POP 'ту жалгыз ката катары күйгүзүү → origin боюнча бороондорду бир нече жолу азайтат.
5. 2 Coalescing/single-flight
Четте бир суроо ката болгондо кэш "тешип"; калгандары күтүп жатышат (эч кандай кууп stampede).
5. 3 Rate-limit/Queue/Shedding на edge
Ашыкча жүктөөдө - төмөн артыкчылыктуу/анонимдүү суроо-талаптарды origin эмес, POPке ыргытыңыз.
5. 4 Signed URL / Signed Cookie
Origin edge артында жашырылган. Жеке мазмунга кирүү - кол коюлган шилтемелер/TTL жана атрибуттары бар кукилер (IP/Geo/Path) аркылуу "баарына" таратпоо үчүн.
6) Транспорт жана трансформация
6. 1 HTTP/2–3 и QUIC
HTTP/2: multiplexing, хедер-компрессия.
HTTP/3/QUIC: аз HOL блоктору жана жоготуу каналдарында жакшы → p95/p99 TTFB төмөн.
6. 2 Компрессия жана сүрөттөр
текст үчүн Brotli, сүрөттөр үчүн AVIF/WebP, четинде Image Resizing (responsive sizes, DPR).
Формат/өлчөмү боюнча кэш варианттары: ачкычтар 'width/format' (же 'Vary: Accept '/Client-Hints) кирет.
6. 3 TLS/0-RTT (кылдат)
Recumpling сессиялар орнотуу тездетет, 0-RTT replay алсыз болушу мүмкүн → гана Emempotent GET үчүн күйгүзүү.
7) Коомдук Vs жеке edge кэш
7. 1 Коомдук
'Cache-Control: public, s-maxage =...' жана минималдуу 'Vary'.
каталог үчүн ылайыктуу, кабар, сүрөттөр, CDN статикасы.
7. 2 Жеке/жекече
Параметрлери:- 'Cache-Control: private' (браузер кэши).
- Key-segmentation: ачкычка tenant/user-id (же токен-хэш) киргизип, private-shared (сактоо жана PII менен кылдаттык менен) деп белгилеңиз.
- Signed cookies жана Edge-auth: кэш ачык, бирок кол менен кирүү (encrypted session state менен параметрлери четинде).
8) Edge-compute (Workers/Functions)
POP жарык өзгөчөлүктөрү: жол/баш, A/B-split, ачкычтарды нормалдаштыруу, SWR-логика, prefetch кошуна ресурстар.
Жергиликтүү KV/Cache бир миллисекунддук иш үчүн POP боюнча API.
Чектөөлөр: кыска убакыт/эс, узак мөөнөттүү байланыштар жок, PII/региондук менен кылдат иштөө.
Псевдо-мисал (Workers-like)
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) Конфигурация мисалдары
9. 1 Nginx: micro-cache + 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 Varnish: surrogate keys и 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 Envoy (edge-cache чыпкасы)
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-style жүрүм-туруму (эскиз)
Behavior A: '/images/' - узун TTL, кысуу, формат боюнча vary.
Behavior B: '/api/' - кыска TTL, SWR, signed cookie, WAF/бот коргоо.
Origin Shield кирет, статусун 500/502/504 → 'stale-if-error'.
10) Байкоо, SLO жана отчеттуулук
10. 1 Метрика
cache_hit_ratio (POP/аймак/route), byte_hit_ratio.
origin_offload = 1 − (origin_requests / edge_requests).
TTFB/TTL Quantils, stale_responses_total, revalidations_total.
stampede_prevented_total, coalesced_waiters.
shield_hit_ratio (tiered менен), origin_egress_bytes (наркы).
10. 2 Логи/соода
Tags 'HIT/MISS/STALE/UPDATING/BYPASS', ачкычы, TTL, POP, tenant.
Бөлүштүрүлгөн соодада булагын ('edge', 'origin') жана себебин (revalidate/stale/error) белгилеңиз.
10. 3 SLO мисалдар
«Для `/api/list`: p99 TTFB ≤ 250 мс, edge hit ≥ 70%, byte-hit ≥ 80%, origin error-offload ≥ 90%».
"Stale-if-error" жооп үлүшү ≤ күнүнө 1% ".
11) Коопсуздук, купуялык, шайкештик
WAF/бот башкаруу - origin чыпкалоо үчүн edge боюнча.
Маалыматтардын регионалдуулугу: жеке экспонаттарды уруксат берилген POP гана сактаңыз; региондук ачкычтарды жана ACL колдонуу.
Кол тамгалар жана белгилер edge, коомдук кэшден жеке жооп бербеңиз.
PII-минималдаштыруу: жеке маалыматтарды ачкычтарга киргизбеңиз; куки шифрлөө; кыска TTL жекелештирүү үчүн.
12) типтүү Recipes
12. 1 "Дээрлик динамикасы" (тасмалар/тизмелери)
edge + SWR менен Micro-cache 1-3, shield киргизилген, бир-flight, 1-5 б бош натыйжалары үчүн negative-cache.
12. 2 булуттар сүрөттөр/медиа
Edge-кайра иштетүү/форматтоо (WebP/AVIF), 'width/format' кэш варианттары, узун TTL, мазмун тегдери боюнча майыптык.
12. 3 жекелештирүү менен API
'Cache-Control: private' же signed cookie + ачкыч сегментациясы (tenant), кыска TTL, SWR үчүн "дээрлик коомдук" жооп бөлүктөрү.
12. 4 Чоң сатуу/чокулары
Негизги ресурстарды жылытуу (prewarm), статика боюнча TTL жогорулатуу, агрессивдүү SWR/SIE, origin боюнча катуу чектөөлөр, Shield кирет.
13) Анти-үлгүлөрү
ар кандай жооптор жок 'Vary' → агып/туура эмес маалыматтар.
Чоң 'Vary' → кардиналдуулук → төмөн hit.
prod/experiments → булганышы үчүн жалпы кэш.
Жок single-flight → origin боюнча бороон-чапкын.
SWR чектөөсүз → жарыш жаңыртуу жана көчкү validate-суроо.
коомдук → коопсуздук окуялар катары жеке жооптордун Edge кэш.
Worldwide-жүктөө жок tiered/shield → origin ысып.
14) Киргизүү чек-тизмеси
- POP-каптоо картасын, anycast + latency-routing кирет.
- tiered/shield жана single-flight/coalescing саясатын тандоо.
- Ачкычтарды жана Vary долбоорлоо (минималдуу кардиналдуулук, PII жок).
- TTL/SWR/SIE (soft/hard TTL) жана negative-cache.
- URL/cookies белги күйгүзүү, origin жашыруу, WAF/бот чыпкалар күйгүзүү.
- майып уюштуруу: Surrogate-Key/BAN + event-driven.
- hit/byte-hit/offload/TTFB жана per-POP дашбордддорун көтөрүү.
- чокулары алдында жылытуу, бороон/ашыкча боюнча runbooks.
- Купуялык/регионалдуулук тесттер, ачкычтарды текшерүү жана саясат.
- SLO/edge үчүн туура эмес бюджет жана TTL/SWR auto-tweaks критерийлери.
15) FAQ
Q: четинде TTL кантип тандоо керек?
A: Жол берилген эскирүү жана hit-ratio максатын четке кагуу. "Дээрлик динамика" үчүн - 1-5 с + SWR; маалымдамалар/сүрөттөр үчүн - окуялар/тегдер боюнча майыптыгы бар мүнөттөр/сааттар.
Q: Качан Shield POP керек?
A: Глобалдык трафик же ысык ачкычтар менен: калкан origin боюнча каталарды кескин азайтат жана "кууп жетүү" толкундарын турукташтырат.
Q: Кантип уруксат жоопторду кэш?
A: Же 'private' (браузер), же public менен signed cookie/URL жана ачкычтын сегментациясы (PII жок), же жалпы маанилүү жеке маалыматтар үчүн bypass.
Q: HTTP/3 менен эмне кылуу керек?
A: Эске алуу: өзгөчө мобилдик/жоготуу канал утуп. Прокси жана fallback шайкештигин HTTP/2.
16) натыйжалары
Edge кэштер жана POP тармагы - жогорку ылдамдыктагы жана үнөмдүү платформалардын пайдубалы. Ийгилик туура ачкыч жана 'Vary', акылга сыярлык TTL/SWR/SIE, тегдер/окуялар боюнча майыптык, tiered/shield origin коргоо, ошондой эле байкоо (hit/offload/TTFB) жана коопсуздук/купуялык тартиби менен аныкталат. Чек тизмесин ээрчип, "край" сюрприз булагы эмес, сиздин ылдамдаткычыңыз болуп калат.