Технология және инфрақұрылым → CDN желісі және контентті кэштеу
CDN желісі және мазмұнды кэштеу
1) Неге CDN және кэш
CDN (Content Delivery Network) RTT және TTFB қысқартады, origin түсіреді және P95/P99 қалдықтарын тұрақтандырады. iGaming/финтех үшін бұл:- Каталог, ассеттер, промо, медиа үшін жылдам бірінші байт.
- Ең жоғары орнықтылық (турнирлер/ивенттер) жарылыс өсімінсіз origin-қуаты.
- Egress үнемдеу және болжамды құн.
- Геобақылау (реттеуіш, контентті лицензиялау).
2) Кешендірудің базалық стратегиялары
2. 1 Кешіктіруге болатын жауаптар
Статика: JS/CSS/қаріптер/иконалар - ұзын TTL (30-365 күн) + атаудағы file-hash.
Жартылай статистика: ойын каталогтары, баннерлер, конфигалар - TTL + 'stale-while-revalidate'.
API GET/HEAD: анықтамалықтар, прайсинг, лидбордтар - қысқа TTL (5-120 сек).
2. 2 Тақырыптар
`Cache-Control: public, max-age=600, stale-while-revalidate=300, stale-if-error=600`
Шартты сұраулар үшін 'ETag '/' Last-Modified'.
'Surrogate-Control '/' CDN-Cache-Control' (егер провайдер қолдаса).
Жеке деректер үшін: 'Cache-Control: no-store' (жай 'no-cache' емес).
2. 3 Кэш кілті (cache key)
Негізгі: жауап беруге әсер ететін әдіс + URL жолы + query параметрлері.
Қоспалар: 'Accept-Encoding' (gzip/br), 'Accept' (json/webp/avif), жергілікті ('Accept-Language'), егер контентке әсер етсе, өңір/валюта.
Кездейсоқ тақырыптарға (cookies, trace ids) кірмеңіз.
3) Vary басқару және кукилер
'Vary: Accept-Encoding, Accept, Accept-Language' - ең аз қажетті жиынтық.
Кешіктірілетін жолдарға арналған CDN-дегі cookies стриппингі: whitelisted (мысалы, AB-жалаулардан басқа).
session идентификаторларын кешірілетін мазмұннан тыс ішкі домендерге/жолдарға тасымалдау.
4) TTL және жаңалық үлгілері
Immutable статикасы: 'Cache-Control: public, max-age = 31536000, immutable' + файл атауындағы нұсқасы.
SWRO/SIE: 'stale-while-revalidate' және 'stale-if-error' - origin проблемалары кезіндегі UX-тұрақтылық.
Partitioned TTL: ойындардың түбірлік тізімі - 30-60 сек; ойын карточкасы - 5-10 мин; баннерлер - 30 мин.
API микс: базалық анықтамалықтар - 5-30 мин; валюталар/лимиттер - 1-5 мин; лидборд ― 2-15 сек.
5) Tiered caching и origin shield
Tiered/Regional caches: edge арқылы өткен сұраулар origin орнына аймақтық «shield» дегенге соғылады.
Артықшылықтары: origin-де MISS аз, «дауылды» тегістеу, egress-тен арзан.
Қалқандарды ең үлкен трафик тығыздығымен (EU, TR, BR, LATAM) гео бойынша топтастырыңыз.
6) Мүгедектік және жылыну
Purge by path/prefix/tag: тегтер пакеттік тазалау үшін ыңғайлы (каталогты шығару, жарнамалық науқан).
Soft purge (grace): мазмұнды ескірген деп белгілейміз, бірақ жаңасы келгенге дейін береміз.
Жылыту (prewarm): шығару кезіндегі/турнир алдындағы сценарийлер: танымал жолдардан сұрау, спрайттар мен суреттердің вариацияларын генерациялау.
Канареялық мүгедектік: ішінара тазартамыз, метриканы/қателерді валидациялаймыз, содан кейін кеңейтеміз.
7) Edge-ережелер мен функциялар (Workers/Functions)
Жауаптарды қайта жазу: кэш тақырыптарын қосу, 'Vary' қалыпқа келтіру, cookies стриппингі.
Geo/ASN-роутинг: редиректорлар, жергілікті/ел бойынша валюта.
Қорғалған медиа/нысандар үшін URL (Signed URLs/Headers) қолтаңбасы.
Edge-AB-тесттер: жеңіл, origin жүктемесінің өсуі жоқ (тек статик/жартылай статик үшін).
Edge-compute: жеңіл виджеттер/дербестендіру рендері, бірақ ыстық төлем жолы емес.
8) Суреттер мен бейнелер
8. 1 суреттер
Автоконверсия: 'Accept' клиенті кезінде WebP/AVIF; 'Vary: Accept'.
edge бойынша ресайзинг: параметрлері 'w/h/fit/quality'; пресеттерді (карточка, баннер, превью) дайындаңыз.
Спрайттар және SVG-оңтайландыру, фронтқа lazy-loading.
8. 2 Бейне/ағым
HLS/DASH қысқа сегменттермен (2-4 сек), жабылатын плейлистер.
Жақын сегменттердің preload және 'stale-if-error'.
Live-ставкалар үшін - TTFB қысқарту үшін аймақтық shield сегменттерін ұстаңыз.
9) CDN арқылы API
Кешірілетін GET: 'Cache-Control' және дұрыс кілтті (жергілікті/валюта/өңір) қосыңыз.
Conditional GET: 'ETag '/' If-None-Match' байттарды және TTFB төмендетеді.
POST/PUT: кешірілмейді; POST жауаптарын тек айқын ережелер мен теңсіздік семантикасы кезінде кешіктіруге болады (сирек ақталады).
Rate limiting/WAF шетінде: боттарды/аномалияларды кесу есебінен қалдықтарды азайтады.
10) Қауіпсіздік, қолжетімділік және комплаенс
WAF/бот-менеджмент: сигнатуралар, мінез-құлық эвристикасы, бонустар сканерлерінен қорғау.
Медиа және жеке жүктеулер үшін Signed URLs/Headers.
mTLS к origin и IP allow-list.
GDPR/PII/PCI: сезімтал деректерді кешіктірмеу; Дербес жауаптары бар API - 'no-store'.
Нарық реттегіштерінің талаптары бойынша шетіндегі Geo-сүзгілер/бұғаттау.
11) Желі және хаттамалар
CDN, TLS resumption және OCSP stapling HTTP/2/3 қосыңыз.
Brotli (br) мәтіндік пішімдер үшін, gzip - fallback.
TCP/QUIC-тюнинг (провайдерде) → шығындардың әсері аз, әсіресе ұтқыр желіде.
12) CDN үшін бақылау және SLO
Метрика (edge және shield бойынша):- Hit Ratio (overall және префикстер бойынша), Origin Offload.
- TTFB өңірлер бойынша P50/P95/P99/ASN.
- Мәртебе кодтары бойынша Throughput/Errors (edge/origin).
- Purge latency (мүгедектікті жеткізу уақыты).
- Image transform latency (егер шетінде ресайзинг қолдансаңыз).
- Ойындар каталогы: TTFB P95 ≤ 150 мс, Offload ≥ 85%.
- Медиа (суреттер): Hit Ratio ≥ 90%, трансформация қателері <0. 1%.
- API GET «анықтамалықтар»: TTFB P95 ≤ 200 мс, Revalidation Hit ≥ 60%.
13) FinOps: кэш құны
Offload = origin → тікелей $ -дан кем egress.
Tiered + shield «дауылдарды» және MISS-жүктемені кеседі.
Кескіндерді оңтайландыру (AVIF/WebP/resize) трафикті барынша үнемдейді.
Жауап салмағының P95 және «қымбат MISS» (байттар × саны × өңір) бақылаңыз.
14) Конфигалар және ережелер (фрагменттер)
14. 1 origin (Nginx) тақырыптары
nginx статика с версионированием location ~ \.(css js woff2)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
полустатика каталога location /catalog/ {
add_header Cache-Control "public, max-age=300, stale-while-revalidate=600, stale-if-error=600";
add_header Vary "Accept, Accept-Language";
}
14. 2 edge кілтін қалыпқа келтіру (псевдо)
js addRule((req) => {
// очищаем шум req.cookies.clearExcept(['ab', 'locale']);
// ключ = method+path+критичные query key = `${req.method}:${req.path}?lang=${q.lang}¤cy=${q.cur}`;
req.setCacheKey(key);
req.setVary(['Accept', 'Accept-Encoding', 'Accept-Language']);
});
14. 3 Signed URL (идея)
/media/{path}?exp=1735707600&sig=HMAC_SHA256(secret, path exp ip)
На edge: проверка exp и подписи, опционально привязка к IP/ASN.
15) Релиз және пайдалану процестері
Release hooks: деплойдан кейінгі тегтер/префикстер бойынша автоматты purge.
Prewarm-тізім: трафик/конверсия бойынша топ-жолдарды алдын ала жылыту.
TTL-матрица каталогы: өніммен/маркетингпен келісілген.
Инциденттер: MISS/TTFB өсуі кезінде - stale-if-error қосамыз, origin тұрақтандырылғанға дейін edge-дегі қымбат трансформацияларды «алып тастаймыз».
16) Енгізу чек-парағы
1. Мазмұн картасы (статика/жартылай статика/API) және TTL-матрица.
2. 'Cache-Control', 'ETag/Last-Modified', 'Vary' түзетулері.
3. «Шусыз» кэш кілті, cookie-стриппинг, whitelists.
4. Өңірлер бойынша Tiered caching + origin shield.
5. Тегтер/префикстер бойынша purge, soft purge, prewarm-процедуралар.
6. Edge функциялары: қалыпқа келтіру, гео-логика, Signed URLs.
7. Кескіндерді оңтайландыру (WebP/AVIF/resize), бейне үшін HLS-сегменттер.
8. WAF/бот-сүзгілер, geo-шектеулер, mTLS к origin.
9. SLO-дашбордтар: TTFB, Hit Ratio, Offload, трансформация қателері.
10. FinOps-есептер: $/GB, қымбат MISS, egress бойынша көшбасшы өңірлер.
17) Қарсы үлгілер
'no-cache' барлық жерде «жағдайға».
Кэш кілті барлық query/тақырыптарды қамтиды → нөлдік Hit Ratio.
Статикаға арналған cookie-тәуелді жауаптар (кэшті толығымен бұзады).
Әрбір релизде бүкіл CDN-ді тазалау.
Шыңдар кезінде edge-дегі ұзақ синхронды трансформациялар.
Жоқ 'stale-while-revalidate '/' stale-if-error' - UX күрт тозуы.
Дербес деректерді/жауаптарды 'no-store' -сыз кешіктіру.
18) iGaming/финтех контексті: практикалық ноталар
Турнирлер/ивенттер: көшбасшы бордқа қысқа TTL (2-10 сек) + SWR; ойын карточкалары мен баннерлердің prewarm.
Гео-лицензиялау: edge-бұғаттау/ел бойынша редиректорлар, кэш кілтіндегі валюта/локаль.
Промо және купондар: баннерлерді/шарттарды кэштейміз, бірақ дербес лимиттерді емес.
Жауапты ойындар: саясат/лимиттер беттері - SWR бар жартылай статистика; дербес деректер - тек 'no-store'.
PSP/KYC вебхактар: CDN немесе edge-pass-through арқылы кэшсіз және қатты таймауттар арқылы емес.
Жиынтық
Күшті CDN стратегиясы - бұл дұрыс тақырып және кэш кілті, MISS төмендету үшін tiered/shield, қалыпқа келтіру және қорғау үшін edge функциялары, тез релиздер үшін мүгедектік/жылыту және SLO және FinOps-пен бақылау. Осы қағидаларды сақтай отырып, сіз TTFB-ді пайдаланушылар мен серіктестерге болжамды ете алатын жылдам және үнемді периметрді аласыз.