GH GambleHub

CDN kesmek we TTL optimizasiýasy

Gysgaça gysgaça

CDN-kesh - ulanyjy bilen origin arasynda "tizlendiriji + galkan". Şonda gowy işleýär:

1. Keş açary (cache key) durnukly we "ses" ýok.

2. TTL-syýasaty ýükde: 's-maxage '/' max-age' + 'stale-while-revalidate/if-error'.

3. Maýyplyk dolandyrylýar: bellikler/prefiksler + "ýumşak" purge.

4. Tiered-cache/origin-shield we negative-cache goşuldy.

5. Gözegçilik bar: gatlaklar boýunça hit-ratio, p95 TTFB, yzyna gaýtarmagyň paýy 304.

Esasy hederler we olaryň manysy

`Cache-Control`:
  • 'max-age = ' - brauzer üçin TTL.
  • 's-maxage = ' - CDN/proxy üçin TTL ('max-age' bilen örtülendir).
  • 'stale-while-revalidate = ' - köne berýäris, paralel täzelenýäris.
  • 'stale-if-error = ' - Hatada köne origin.
  • 'immutable' - çeşme üýtgemeýär (wersiýa assets üçin amatly).
  • 'ETag '/' Last-Modified' - 304 üçin şertler ,/CPU origin baýtlaryny tygşytlaýar.
  • 'Vary' - Kesiş açaryna täsir edýän sözbaşylaryň sanawy.
  • 'Surrogate-Control' - CDN üçin "giňeldilen" Cache-Control (eger goldanylsa).
  • 'Expires' köne, ýöne müşderiler tarapyndan henizem hasaba alynýar.
Mysal (statika, ýyl):

Cache-Control: public, max-age=31536000, immutable
Mysal (howpsuz könelişen ýarym dinamika):

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

Kesiş açary: dizaýn we kadalaşma

Maksat, düýp manysy boýunça birmeňzeş haýyşlaryň şol bir obýekte düşmegi.

URL kadalaşmagy: registrler, goşa sleşler, treýling sleşleri, query-parametrleriň tertibi.
"Ses" nyşany: 'utm _', 'fbclid', 'gclid', mugt ref bellikleri.
Çäklendirilen Wary: diňe hakyky manyly sözbaşylar ('Accept-Encoding', käwagt 'Accept', 'Accept-Language' lokal üçin).
Device-class: zerur bolsa, tükeniksiz user-agent şahalary däl-de, 2-3 synplary (mobile/desktop/tablet) ulanyň.
Auth-konteksti: Şahsy zady kache etmäň; signed-URLs/cookies-bypass ýa-da jemgyýetçilik/şahsy ýollary bölmek.

Fastly-stil (psevdo):

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

Kontent görnüşleri boýunça TTL strategiýalary

GörnüşiTTL CDN (`s-maxage`)Brauzer ('max-age')Goşmaça
Wersiýa edilen assets ('/app. a1b2. js`)1 ýyl1 ýyl`immutable`; maýyplyk gerek däl
Kataloglar/lendingler1-10 minut30-120 s`stale-while-revalidate=10–30 мин`
Şekiller10-60 minut5-15 minutVary по `Accept` (webp/avif)
GET API (kesilen)10-120 s0-30 sDiňe idempotentler; 'stale-if-error' 5-60 min
500/timeout ýalňyşlyklary00Negative-cache 30-120 s (CDN derejesinde), kesmezlik 401/403/POST

Maýyplyk syýasaty

By URL/Prefix: "hemme zady '/static/2025-11-05/' aşagyndan süýşüriň".
By Tag/Key: "ähli 'catalog' we 'product: 123' aýyryň".
Soft purge: köne diýip belläň, obýekti ýuwmaň - doldurmak has çalt.
Waka-driven: CI/CD ýa-da administration-waka webhook "invalidate tags" diýip atlandyrýar.

Maslahat: iki taktikany birleşdiriň: assets üçin ýollaryň wersiýasy + mazmun/sahypa üçin tag-purge.

Tiered-cache, origin-shield и prewarm

Tiered-cache: CDN → sebit gatlaklary origin soraglaryndan az.
Origin-shield: origine bir "galkan" POP - lokalizasiýany we hit-ratio gowulandyrýar.
Prewarm (pre-fetch): iwent/relizden öň gyzgyn URL/kesşiň gyzmagy.
Negative-cache: origini retraý tupany bilen doldurmazlyk üçin gysga wagtda 5xx/Timeout (30-120 s) kesiň.

API кеш: mümkin bolanda

Diňe GET/HEAD we idempotent.
Açar: ýol + möhüm query (mysal üçin '? category =... & page =...').
Tassyklamak: 'ETag '/' Last-Modified' we gysga 's-maxage'.
Ulanyjy süzgüçleri: Müşderä/edge funksiýasyna şahsylaşdyryň ýa-da signed-requests + "köpçülige" jogap beriň.

Mysal (API, 30 s + SWR):

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

Cache poisoning

URL/başlyklaryň gaty kadalaşmagy; açardaky parametrleriň ak sanawy.
Şübheli başlyklary/dublikatlary kesmek ('X-Forwarded-', giňeldilen 'Accept').
"Wary" çäklendirmesi we sözbaşylaryň ululygyna/sanyna gözegçilik.
Domen bölünişi: Hususy/admin - Keshsiz aýratyn at.
Jogaplary tassyklamak: 4xx (statika üçin 404-den başga), aç-açan syýasat bolmazdan "ulanyjy" sahypalaryny gizlemäň.

Gysyş we formatlar

Brotli (js/css/json), gzip - fallback; öňünden gysylan assetalar kabul edilip bilner.
Images: webp/avif goldaw bar ýerinde; 'Vary: Accept' + emele gelen derivatiwleri ulanyň.
Wideo/ses üçin range-requests: CDN çankalary kesýär.
Content-Negotiation: Açaryň pes kardinalligini saklaň (çig UA-nyň ýerine device-class).

Synlamak we SLO

Esasy metrikler

Hit-ratio (by bytes/requests) на edge/tier/shield.
Sebitler we görnüşler boýunça p50/95/99 TTFB (statik/API).
Fill-rate/Origin egress - origin näçeräk gidýär.
304 rate we jogabyň ortaça ululygy.
Error budget: paýy 'stale-if-error '/' SWR' berlişi; purge ýygylygy.

SLO mysallary

'p95 TTFB' statistika sebitleýin ≤ 120-150 ms, GET kesilen API ≤ 200-250 ms.
Edge hit-ratio statika ≥ 90%, ýarym dinamikler ≥ 60%.
Stale şahasyndan berlen jogaplaryň paýy ≤ 0. 30 günde 5%.

Şpargalka

Nginx (CDN ýa-da öz-PoP-den öň 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, düşünje)

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

"Çalt" assets üçin hederler


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

Halfarym dinamika üçin hederler (kataloglar)


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

FinOps: nagt pul tygşytlamak

Egress origin ↓, az CPU/DB-ýük → aşaky infrastruktura çykdajylary.
Tölegli belliklere çenli az haýyş (search/index/images).
Maksat metrikasy: $/p95 azalmak we $/egress 1 GB azalmak - işe girizilenden soňky täsirini yzarlaň.

iGaming/fintech üçin aýratynlyklar

Üpjün edijileriň kataloglary/assets: wersiýa ýollary + bir ýyllyk TTL.
Wakalaryň/ýaryşlaryň sanawy: 1-5 min 's-maxage' + 'SWR' 10-30 minutda; tag-purge täzelenende.
Liv-sahypalar (koeffisiýentler/tablisalar): JSON-bloklaryň bölekleýin keşi, gysga TTL (5-30 s), şahsy bloklar üçin - müşderi renderi.
PSP/töleg endpointleri: nagt däl, berk 'no-store'; Diňe maglumat kitaplaryny (BIN-tablisalar, statuslar) kesiň.
Antibot: statik/GET kesmek, şübheli ASN üçin "çal" ugurlar; 'Vary' sözbaşylaryna ýol bermäň.

Giriş barlagy

  • Keshiň açary beýan edildi: URL-iň kadalaşmagy, rugsat berlen kwery, 'Vary' diňe dogry.
  • Jemgyýetçilik/şahsy ýollar bölünýär; şahsy - 'no-store' we bypass CDN.
  • Mazmun görnüşlerine görä TTL basgançaklary girizildi; 'SWR/if-error'.
  • Sazlanan tiered-cache + origin-shield; negative-cache 5xx (gysga) goşuldy.
  • tag/URL purge, soft purge bar; CI/CD bilen integrasiýa.
  • Gysyş (br/gzip), şekil web formatlary we range jogaplary goşuldy.
  • Metrikler: hit-ratio by layer, p95 TTFB, 304 rate, origin egress; şowsuzlyklar üçin aladalar.
  • Pleýbuklar: iň ýokary nokatlardan öň kesçe gyzdyrmak, gyssagly purge, origin zaýalanmak.

Adaty ýalňyşlyklar

Ulanyjylarda uly TTL → "ýapyşan" bandllary bolan assetalar wersiýasyz.
Aşa 'Vary' ('User-Agent', ähli sözbaşylar boýunça) → kardinallygyň partlamasy we pes hit-ratio.
Şahsy mazmuny kesmek 4xx/401/403/.
Negative-cache → bozulan origin üçin haýyşlaryň göçmegi.
tag-purge → köpçülikleýin nokat purge we "tupan" re-fill ýok.
Kesiş açary "şowhunly" UTM/ref parametrlerini öz içine alýar.
Statika üçin TTL gaty gysga → CDN we origin-de artykmaç ýük.

Kiçi pleýbuklar

1) Wakadan öň keşi gyzdyrmak

1. Bloglar boýunça top-N URL ýygnamak → 2) Sebitler boýunça paralel prefetch (rate-limited) → 3) Hit-ratio ↑ we p95 ↓.

2) Katologlaryň gyssagly soft-purge

1. Ibermek 'PURGE '/tag-clear → 2) CDN stale berýär we fon täze çekýär → 3) Origin-de tikenleriň ýoklugyny barlamak.

3) Ýüz öwürmek origin

1. 'stale-if-error' X sagady halas edýär → 2) "Tehniki iş" bannerini edge → 3) Dikeldiş boýunça - maksatly warm-up.

Jemi

Güýçli CDN strategiýasy = dogry keş açary + SWR/if-error bilen manyly TTL + dolandyrylýan maýyplyk + tiered/shield + syn etmek. Hederlerde we IaC-de syýasaty düzüň, hit-ratio we p95 ölçäň, iň ýokary derejä çenli gyzmagy meýilleşdiriň - ulanyjylar hemişe çalt jogap alarlar we origin iň yssy sagatda-da diri galar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.