Edge кэштер және POP
1) POP дегеніміз не және неге «шеті»
POP (Point of Presence) - географиялық жағынан пайдаланушыға жақын контентті жеткізу желісінің торабы (CDN/edge). Edge-кэш - тікелей POP-да жауап сақтау қабаты, ол төмендегілерді азайтады:- Жасырындылық (клиент үшін RTT кем).
- Origin (offload) жүктемесі мен құны.
- Аймақтар/бұлттар арасындағы трафик (egress-үнемдеу).
Edge тек кэш емес. Қазіргі POP L7-маршруттауды, WAF/бот-сүзгілерді, rate-limit, А/В/канарейка, трансформация және 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 РТТ/қателерді белсенді өлшеу бойынша РОР/өңірлік пулдар арасында ауыстырып қосады.
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 (304) үшін 'ETag '/' Last-Modified'.
- 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 Кілт пен тегтер бойынша
URL/префикс бойынша PURGE/BAN - дөрекі, бірақ тез.
Surrogate-Key/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: мультиплексиялау, хедер-компрессия.
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 (мұқият)
Сессияларды ресмплингтеу орнатуды жеделдетеді, 0-RTT тек қана 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-сплит, кілттерді қалыпқа келтіру, SWR-логика, көрші ресурстардың prefetch.
Миллисекундтық операциялар үшін жергілікті KV/Cache API POP.
Шектеулер: қысқа таймауттар/жады, ұзақ өмір сүретін қосылыстардың болмауы, 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, stale_responses_total, revalidations_total.
stampede_prevented_total, coalesced_waiters.
shield_hit_ratio (tiered кезінде), origin_egress_bytes (құны).
10. 2 Логи/трейдерлер
'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-азайту: жеке деректерді кілттерге қоспаңыз; cookie файлын шифрлаңыз; дербестендіруге арналған қысқа TTL.
12) Типтік рецептілер
12. 1 динамикасы (таспалар/тізімдер)
Micro-cache 1-3 с + SWR edge, shield қосылған, 1-5 с. бос нәтижелер үшін single-flight, 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, Shield қосылған origin қатаң лимиттері.
13) Қарсы үлгілер
'Vary' жоқ, егер жауап айырмашылығы болса → ағып кету/қате деректер.
Үлкен 'Vary' → түбегейлі → төмен hit.
prod/experiments → ластану үшін ортақ кэш.
single-flight → дауылы жоқ origin.
SWR шектеусіз → жаңарту жарысы және көшкін validate-сұрау.
public → қауіпсіздік оқиғалары ретінде жеке жауаптардың 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/cookie белгісін қосыңыз, origin жасырыңыз, WAF/бот сүзгілерін қосыңыз.
- Мүгедектікті ұйымдастырыңыз: Surrogate-Key/BAN + event-driven.
- hit/byte-hit/offload/TTFB өлшемдерін және per-POP дашбордтарын көтеріңіз.
- Шыңдар алдында жылыту, дауыл/жүктеме runbooks.
- Құпиялылық/аймақтық тестілері, кілттер мен саясаттың аудиті.
- SLO/edge үшін қате бюджет және TTL/SWR авто-твиктерінің критерийлері.
15) FAQ
Q: шетінде TTL қалай таңдауға болады?
А: Рұқсат етілген ескіруден және hit-ratio мақсатынан бас тартыңыз. «Дерлік-динамика» үшін - 1-5 с + SWR; анықтамалықтар/суреттер үшін - оқиғалар/тегтер бойынша мүгедектігі бар минуттар/сағаттар.
Q: Shield POP қашан қажет?
A: Жаһандық трафик немесе ыстық кілттер кезінде: shield origin қателіктерін бірден азайтады және «қуып жету» толқындарын тұрақтандырады.
Q: Авторизацияланған жауаптарды қалай кэштеу керек?
A: Не 'private' (браузер), не public signed cookie/URL және кілт сегментациясы (PII-сыз), не жалпы сыни дербес деректер үшін bypass.
Q: HTTP/3 не істеу керек?
A: Қосу: әсіресе мобильді/жоғалған арна ұтады. HTTP/2 прокси мен fallback сыйысымдылығын бақылаңыз.
16) Қорытынды
Edge-кештер және POP желісі - жылдам және үнемді платформалардың іргетасы. Табыс дұрыс кілтпен және 'Vary', ақылға қонымды TTL/SWR/SIE, тегтер/оқиғалар бойынша мүгедектікпен, tiered/shield origin қорғанысымен, сондай-ақ бақылаушылықпен (hit/offload/TTFB) және қауіпсіздік/құпиялылық тәртібімен анықталады. Чек-парақты орындаңыз - «жиек» тосын сый көзі емес, жеделдеткіш болады.