GH GambleHub

CDN және edge кэштеу

CDN және edge кэштеу

1) Мақсаттар

CDN (Content Delivery Network) жасырындылықты және origin жүктемесін төмендетеді: 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 үшін - маршруттан кілт + нұсқа идентификаторы (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 береді.
«Жылы» жылыту: деплойдан кейін өңірлерден негізгі беттерді алыңыз.

5) Edge-өнімділік үлгілері

Stale-While-Revalidate: жылдам жауап «ескірген» көшірме + өңдік жаңарту.
Сындарлы ресурстардың prefetch (preload, preconnect, dns-prefetch).
Compression: gzip/br (мәтіндік), егер CDN қолданатын болса zstd.
HTTP/2/3 (QUIC): мультиплексиялау және аз жасырындылық.
TLS session resumption және OCSP stapling периметрінде.

6) Суреттер мен бейнелер

Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Видео: 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/cookies (бейне/есептер): 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-нүктелерден health-checks.
Бірыңғай кілт/тақырып схемасы (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 рұқсат.
Service Worker: оффлайн кэширлеу, сыни жолдардың prefetch, мақсатты жаңартулар.

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-пайдаланушы/per-токен).
Signed Cookies/Headers және 'Vary: Authorization' бағдарламаларын тек қатаң бақылауда қолданыңыз (басқаша - cache-bust).
Қауіпсіз балама: көпшілік қабаты мен жеке инклюдтерді (ESI/edge-композиция) бөліңіз.

14) Гео/мазмұн ережелері

Лицензиялық шектеулер: edge-дегі geo-deny, 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 күн

Кескіндерді оңтайландыру (resize/format), origin-shield.
Қол қойылған жеке медиа URL, WAF/DDoS профильдері.
Дашбордтар: 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-кілттерді толық автоматтандыру.

18) Қорытынды

CDN тиімді контуры - бұл кілттер/TTL/нұсқалар, мүгедектік тәртібі және edge-логика. SWR/IFE, origin-shield, медиа оңтайландыру және қатаң қауіпсіздік (WAF, URL қол қойылған) қосыңыз. Өлшемдерді стандарттаңыз және purge-ді CI/CD-ге біріктіріңіз - және сіз ең жоғары жүктемелер мен «қара аққындарға» дайын жылдам, үнемді және тұрақты периметрді аласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.