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.
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.
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
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ň.
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.