GH GambleHub

CDN keshlash va TTL optimallashtirish

Qisqacha xulosa

CDN kesh - bu foydalanuvchi va origin orasidagi «tezlatgich + qalqon». Agar:

1. Kesh kaliti (cache key) barqaror va «shovqin» mavjud emas.

2. TTL-siyosat yuk ostida:’s-maxage ’/’ max-age’+’stale-while-revalidate/if-error’.

3. Nogironlik: teglar/prefikslar + «yumshoq» purge bo’yicha boshqariladi.

4. tiered-cache/origin-shield va negative-cache yoqilgan.

5. Kuzatish mavjud: qatlamlar bo’yicha hit-ratio, p95 TTFB, qaytarish ulushi 304.

Asosiy xederlar va ular nimani anglatadi

`Cache-Control`:
  • ’max-age = ’ - brauzer uchun TTL.
  • ’s-maxage = ’ - CDN/proxy uchun TTL (’max-age’ni qoplaydi).
  • ’stale-while-revalidate = ’ - eskirganini beramiz, shu bilan birga yangilaymiz.
  • ’stale-if-error = ’ - xato roʻy berganda eskirgan originni beramiz.
  • ’immutable’ - resurs o’zgarmaydi (versiya qilingan assetalar uchun mos keladi).
  • ’ETag ’/’ Last-Modified’ - 304 uchun shartlar, bit/CPU origin tejash.
  • ’Vary’ - kesh kalitiga taʼsir qiluvchi sarlavhalar roʻyxati.
  • ’Surrogate-Control’ - CDN uchun «kengaytirilgan» Cache-Control.
  • ’Expires’ eskirgan, ammo mijozlar tomonidan hisobga olinadi.
Misol (statika, yil):

Cache-Control: public, max-age=31536000, immutable
Misol (xavfsiz eskirgan yarim dinamika):

Cache-Control: public, s-maxage=300, max-age=60, stale-while-revalidate=600, stale-if-error=86400
ETag: "a1c3..."

Kesh kaliti: dizayn va normallashtirish

Maqsad - bir xil so’rovlarni bir xil ob’ektga tushirishdir.

URLni normallashtirish: registr, qoʻshaloq slashlar, treyling-slashlar, query-parametrlar tartibi.
Shovqin ignori:’utm _’,’fbclid’,’gclid’, ixtiyoriy ref-teglar.
Cheklangan Vary: faqat haqiqiy mantiqiy sarlavhalar (’Accept-Encoding’, ba’zan’Accept’,’Accept-Language’lokal uchun).
Device-class: agar kerak boʻlsa, cheksiz user-agent filiallarini emas, balki 2-3-sinflarni (mobile/desktop/tablet) ishlating.
Auth konteksti: andoza ravishda shaxsiy kontekstni keshlamang; signed-URLs/cookies-bypass yoki ommaviy/shaxsiy yoʻllarni ajratishdan foydalaning.

Fastly-stil (psevdo):

Surrogate-Key: product:123 catalog
Cache-Control: public, s-maxage=300, stale-while-revalidate=600
Vary: Accept-Encoding

Kontent turlari bo’yicha TTL-strategiyalar

TuriTTL CDN (`s-maxage`)Brauzer (’max-age’)Qoʻshimcha
Versiya qilingan assetalar (’/app. a1b2. js`)1 yil1 yil`immutable`; nogironlik kerak emas
Kataloglar/lendinglar1-10 min30-120 s`stale-while-revalidate=10–30 мин`
Rasmlar (resayzalar)10-60 min5-15 daqiqaVary по `Accept` (webp/avif)
GET API (kesh qilinadigan)10-120 s0-30 sFaqat idempotentlar;’stale-if-error’5-60 min
Xatolar 500/timeout00Negative-cache 30-120 s (CDN darajasida), keshlamang 401/403/POST

Nogironlik siyosati

By URL/Prefix: «hammasini ’/static/2025-11-05/’ ostida siljiting».
By Tag/Key: «butun’catalog’va’product: 123’ni olib tashlash».
Yumshoq purge: eskirgan deb belgilash, obʼektni oʻchirmaslik - qayta toʻldirish tezroq.
Event-driven: CI/CD yoki ma’muriy hodisa webhook’invalidate tags’ga olib keladi.

Maslahat: ikkala taktikani birlashtiring: assetalar uchun yo’llarni + kontent/sahifalar uchun tag-purge.

Tiered-cache, origin-shield и prewarm

Tiered-cache: CDN → hududiy qatlamlari origin soʻrovlaridan kamroq.
Origin-shield: bitta «qalqon» POP origin - lokalizm va hit-ratio yaxshilaydi.
Prewarm (pre-fetch): issiq URL/keschni ivent/reliz oldidan isitish.
Negative-cache: retray bo’roni originni to’ldirmaslik uchun qisqa vaqt ichida 5xx/Timeout keshlang (30-120 s).

API kesh: qachon mumkin

Faqat GET/HEAD va idempotent.
Kalit: yoʻl + muhim query (masalan,’? category =... & page =...’).
Validatsiya:’ETag ’/’ Last-Modified’va qisqa’s-maxage’.
Foydalanuvchi filtrlari: mijoz/edge funksiyasiga shaxsiylashtiring yoki signed-requests + «ommaviy» javobdan foydalaning.

Misol (API, 30 s + SWR):

Cache-Control: public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600
ETag: "feed-v42"

Kesh zaharlanishidan himoya qilish (cache poisoning)

URL/sarlavhalarni qattiq normallashtirish; kalitdagi parametrlarning oq roʻyxati.
Shubhali sarlavhalar/dublikatlarni kesish (’X-Forwarded-’, kengaytirilgan’Accept’).
«Vari» ni cheklash va sarlavhalar sonini/sonini nazorat qilish.
Domenlarni ajratish: shaxsiy/admin - keshsiz alohida nomda.
Javoblarni tasdiqlash: 4xx ni keshlamang (statik uchun 404 dan tashqari), aniq siyosatsiz «foydalanuvchi» sahifalarini keshlamang.

Siqish va formatlar

Brotli (js/css/json), gzip - fallback; oldindan siqilgan assetalar mumkin.
Images: webp/avif qo’llab-quvvatlash joyida; ’Vary: Accept’ + hosilali derivativlardan foydalaning.
Video/audio uchun Range-requests: CDN chiplarni kesh qiladi.
Content-Negotiation: kalitning past kardinalligini saqlang (xom UA oʻrniga device-class).

Kuzatish darajasi va SLO

Asosiy metriklar

Hit-ratio (by bytes/requests) на edge/tier/shield.
hududlar va turlar bo’yicha p50/95/99 TTFB (statik/API).
Fill-rate/Origin egress - origin qancha sarflaydi.
304 rate va o’rtacha javob miqdori.
Error budget: ulushi’stale-if-error ’/’ SWR’berilishi; purge chastotasi.

SLO namunalari

’p95 TTFB’ statikasi hududiy ≤ 120-150 ms, GET keshlanayotgan API ≤ 200-250 ms.
Edge hit-ratio statika ≥ 90%, yarim dinamika ≥ 60%.
Xatolarda stale-filialdan javoblar ulushi ≤ 0. 30 kun ichida 5%.

-shpargalkalar

Nginx (CDN oldidan yoki self-PoP ga reverse-proxy)

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CDN:512m max_size=100g inactive=7d;

map $args $clean_args {
"~(^    &)(utm_    gclid    fbclid) """; # default $ args simplified example;
}

server {
listen 443 ssl http2;
set $cache_key "$scheme$request_method$host$uri?$clean_args    $http_accept    $http_accept_encoding";
location /static/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_ignore_headers Set-Cookie;
add_header Cache-Control "public, s-maxage=86400, max-age=3600, stale-while-revalidate=600" always;
proxy_pass https://origin_static;
}

location /api/public/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_cache_valid 200 30s;
add_header Cache-Control "public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600" always;
proxy_set_header If-None-Match $upstream_http_etag;
proxy_pass https://origin_api;
}
}

Envoy (SWR + negative-cache, konsept)

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. cache. simple_http_cache. v3. SimpleHttpCacheConfig
Cache-Control/Surrogate-Control Header Cache Policies
We cache 5xx errors briefly via route/retry policy + local_rate_limit

«Tezkor» assetalar uchun xedyerlar


Cache-Control: public, max-age=31536000, immutable
ETag: "hash"
Content-Encoding: br

Yarim dinamika uchun xederlar (kataloglar)


Cache-Control: public, s-maxage=600, max-age=120, stale-while-revalidate=1800, stale-if-error=86400
Vary: Accept-Encoding, Accept

FinOps: kesh pulni qanday tejaydi

Egress origin ↓, kam CPU/DB-yuk → past infratuzilma xarajatlari.
Pullik orqa tomonlar (search/index/images) uchun kamroq soʻrov.
Maqsadli metrika: $/p95 pasayishi va $/egress 1 GB pasayishi - ishga tushirishdan keyingi effektni kuzating.

iGaming/fintech uchun o’ziga xos

Provayderlar/assetalar kataloglari: versionlangan yo’llar + yillik TTL.
Tadbirlar/turnirlar lendinglari: 1-5 daqiqa’s-maxage’+’SWR’ga 10-30 daqiqa; yangilanishda tag-purge.
Liv-sahifalar (koeffitsiyentlar/jadvallar): JSON-bloklarning qisman keshi, qisqa TTL (5-30 s), shaxsiy bloklar uchun - mijoz renderi.
PSP/to’lov endpointlari: keshlamaymiz, qat’iy’no-store’; Faqat maʼlumotnomalarni (BIN jadvallari, holatlar) keshlab oling.
Antibot: statik/GET keshlash, shubhali ASN uchun «kulrang» yo’nalishlar; shovqinli sarlavhalar bo’yicha’Vary’ga yo’l qo’ymang.

Joriy etish chek-varaqasi

  • Kesh kaliti tasvirlangan: URLni normallashtirish, ruxsat etilgan query roʻyxati,’Vary’faqat kerakli.
  • Ommaviy/shaxsiy yo’llar ajratilgan; xususiy -’no-store’va bypass CDN.
  • Kontent turlari bo’yicha TTL-zinapoyalar joriy etildi; ’SWR/if-error’ moslamalari.
  • Tiered-cache + origin-shield moslashtirilgan; negative-cache 5xx (qisqa) yoqilgan.
  • tag/URL purge, yumshoq purge mavjud; CI/CD bilan integratsiya.
  • Kompresssiya (br/gzip), veb-rasm formatlari va range javoblar yoqilgan.
  • Metriklar: hit-ratio by layer, p95 TTFB, 304 rate, origin egress; muvaffaqiyatsizliklar uchun alertlar.
  • Pleybuklar: cho’qqilar oldidan keshni isitish, shoshilinch purge, origin degradatsiyasi.

Tipik xatolar

Foydalanuvchilar orasida katta TTL → «yopishgan» bandlali assetalar versiyasiz.
Haddan tashqari’Vary’(’User-Agent’bo’yicha) → kardinallik portlashi va past hit-ratio.
4xx/401/403/shaxsiy kontentni keshlash.
Negative-cache → Degrading origin soʻrovlari koʻchkisi.
tag-purge → ommaviy nuqtali purge va «boʻron» re-fill yoʻq.
Kesh kalitiga «shovqinli» UTM/ref parametrlari kiradi.
Statika uchun TTL juda qisqa → CDN va origin uchun ortiqcha yuk.

Mini-pleybuklar

1) Voqea oldidan keshni isitish

1. Top-N URL yig’ish → 2) Mintaqalar bo’yicha parallel prefetch (rate-limited) → 3) Tekshirish hit-ratio ↑ va p95 ↓.

2) Shoshilinch soft-purge katologlari

1. Jo’natish’PURGE ’/tag-clear → 2) CDN stale beradi va fon yangilarini tortadi → 3) Origin’da tikanlar yo’qligini tekshirish.

3) Rad etish origin

1.’stale-if-error’X soatiga yordam beradi → 2) «texnik ishlar» bannerini edge → 3 da yoqish) Qayta tiklash bo’yicha - maqsadli warm-up.

Jami

Kuchli CDN strategiyasi = toʻgʻri kesh kaliti + SWR/if-error bilan mazmunli TTL + boshqariladigan nogironlik + tiered/shield + kuzatish. Siyosatni heeder va IaC bilan o’rnating, hit-ratio va p95 o’lchang, cho’qqilarni isitishni rejalashtiring - va foydalanuvchilar doimo tezkor javob olishadi va origin eng issiq soatlarda ham tirik qoladi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.