Logo GH

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.

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.