GH GambleHub

CDN кэш жана TTL оптималдаштыруу

Кыскача резюме

CDN кэш - бул колдонуучу менен origin ортосундагы "ылдамдаткыч + калкан". Ал жакшы иштейт, качан:

1. Кэш ачкычы (cache key) туруктуу жана "ызы-чуу" жок.

2. TTL-жүктөө саясаты: 's-maxage '/' max-age' + 'stale-while-revalidate/if-error'.

3. майыптыгы башкарылат: тегдер/префикстер + "жумшак" purge.

4. tiered-cache/origin-shield жана negative-cache кирет.

5. Байкоо бар: катмарларда hit-ratio, p95 TTFB, кайтаруу үлүшү 304.

Негизги хедерлер жана алар эмнени билдирет

`Cache-Control`:
  • 'max-age = ' - Браузер үчүн TTL.
  • 's-maxage = ' - CDN/прокси үчүн TTL ('max-age' менен жабылат).
  • 'stale-while-revalidate = ' - эскиргенин беребиз, ошону менен бирге жаңылайбыз.
  • 'stale-if-error = ' - эскирген origin катасын беребиз.
  • 'immutable' - ресурс өзгөрбөйт (версияланган assets үчүн ылайыктуу).
  • 'ETag '/' Last-Modified' - 304 үчүн шарттар, байттарды/CPU origin үнөмдөө.
  • 'Vary' - кэш ачкычына таасир этүүчү аталыштардын тизмеси (токтоо колдонуу!).
  • 'Surrogate-Control' - CDN үчүн "Advanced" Cache-Control (колдосо).
  • 'Expires' - эскирген, бирок дагы эле кардарлар тарабынан эске алынат.
Мисал (статика, жыл):

Cache-Control: public, max-age=31536000, immutable
Мисал (коопсуз эскирүү менен жарым-динамикасы):

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

Кэш ачкычы: дизайн жана нормалдаштыруу

Максаты - суроо-талаптардын бир эле объектке түшүүсү.

URL нормалдаштыруу: каттоо, кош слэштер, трейлинг слэш, query параметрлери тартиби.
Ignor "ызы-чуу": 'utm _', 'fbclid', 'gclid', өзүм билемдик ref теги.
Чектелген Vary: гана реалдуу мааниге ээ аталыштар ('Accept-Encoding', кээде 'Accept', 'Accept-Language' жергиликтүү үчүн).
Device-class: керек болсо, чексиз user-агент бутактарын эмес, 2-3 классты (mobile/desktop/tablet) колдонуңуз.
Auth-контекст: демейки жеке кэш жок; колдонуңуз signed-URLs/cookies-bypass же коомдук/жеке жолдорду бөлүштүрүү.

Fastly-стили (псевдо):

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

Контент түрлөрү боюнча TTL стратегиялары

ТүрүTTL CDN (`s-maxage`)Браузер ('max-age')Кошумча
Версияланган assets ('/app. a1b2. js`)1 жыл1 жыл`immutable`; майыптыктын кереги жок
Каталогдор/лендингдер1-10 мин30-120 с`stale-while-revalidate=10–30 мин`
Сүрөттөр10-60 мин5-15 минVary по `Accept` (webp/avif)
API GET (кэш)10-120 с0-30 сГана демпотент; 'stale-if-error' 5-60 мин
500/timeout каталар00Negative-cache 30-120 с (CDN деъгээлинде), кэш жок 401/403/POST

Майыптык саясаты

By URL/Префикс: "Баарын ылдый жылдыруу '/static/2025-11-05/'".
By Tag/Key: "бүт 'catalog' жана 'product: 123' алып салуу".
Soft purge: эскирген катары белгилөө, объектти жууп жок - тез кайра толтуруу.
Event-driven: CI/CD же админ-окуя webhook чакырат "invalidate tags".

Сунуш: эки тактикасын бириктирип: ассеталар үчүн жолдорду версиялоо + мазмун/барактар үчүн tag-purge.

Tiered-cache, origin-shield и prewarm

Tiered-cache: Аймактык CDN катмарларын → origin үчүн аз суроо.
Origin-shield: origin бир "калкан" POP - жергиликтүү жана hit-ratio жакшыртат.
Prewarm (pre-fetch): ысык URL/кэш event/релиз алдында жылытуу.
Negative-cache: кыска убакыт 5xx/Timeout кэш (30-120 с) оригиналдуу бороон-чапкын retrains толуп калбашы үчүн.

API кэш: качан мүмкүн

Гана GET/HEAD жана idempotent.
Ачкыч: жол + маанилүү query (мисалы, '? category =... & page =...').
Валидация: 'ETag '/' Last-Modified' жана кыска 's-maxage'.
Колдонуучу чыпкалары: кардарга/edge функциясына жекелештирүүнү алып келиңиз же signed-requests + "коомдук" жоопту колдонуңуз.

Мисал (API, 30 с + SWR):

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

Уу кэш коргоо (cache poisoning)

URL/аталыштарды катуу нормалдаштыруу; ачкычтагы параметрлердин ак тизмеси.
Шектүү аталыштарды/дубликаттарды кыркуу ('X-Forwarded-', кеңейтилген 'Accept').
Чектөө 'Vary' жана контролдоо көлөмү/саны аталыштары.
Домендерди бөлүштүрүү: жеке/админ - кэшсиз өзүнчө аталышта.
Жоопторду тастыктоо: 4xx кэш жок (статиктер үчүн 404 башка), ачык саясат жок "колдонуучу" барактарды кэш жок.

Кысуу жана форматтар

текст үчүн Brotli (js/css/json), gzip - fallback; алдын ала кысылган assets жол берилет.
Images: колдоо бар webp/avif; колдонуңуз 'Vary: Accept' + туунду туундулары.
Видео/аудио үчүн Range-requests: CDN чанктарды кэш.
Content-Negotiation: ачкычтын төмөн кардиналдуулугун сактоо (чийки UA ордуна device-класс).

Байкоо жана SLO

Негизги метриктер

Hit-ratio (by bytes/requests) на edge/tier/shield.
p50/95/99 региондор жана түрлөрү боюнча TTFB (статикалык/API).
Fill-rate/Origin egress - канча origin барат.
304 rate жана жооп орточо өлчөмү.
Error budget: үлүшү 'stale-if-error '/' SWR' эмиссиясы; purge жыштыгы.

SLO мисалдар

'p95 TTFB' статика аймактык ≤ 120-150 ms, API GET кэш ≤ 200-250 ms.
Edge hit-ratio статика ≥ 90%, жарым-динамиктер ≥ 60%.
ката stale-бутагынын жооп үлүшү ≤ 0. 5% 30 күндүн ичинде.

Шпаргалка

Nginx (CDN же өзүн-өзү PoP алдында reverse-прокси)

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, түшүнүк)

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

"тез" Assets үчүн Heders


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

Жарым динамика үчүн хедерлер (каталогдор)


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

FinOps: кэш акчаны үнөмдөйт

Egress origin ↓, аз CPU/DB-жүгү → төмөн инфраструктуралык чыгымдар.
Акы төлөнүүчү Backends (search/index/images) чейин азыраак суроо.
Максаттуу метрика: $/p95 төмөндөшү жана $/egress төмөндөшү 1 ГБ - пост-башталгыч эффектке көз салуу.

iGaming/Fintech үчүн өзгөчөлүктөрү

Провайдерлердин каталогдору/assets: версияланган жолдор + жылдык TTL.
Иш-чаралардын/турнирлердин мөөнөтү: 1-5 мин 's-maxage' + 'SWR' 10-30 мин; тактоо-purge.
Liv-беттер (коэффициенттер/таблицалар): JSON-блоктордун жарым-жартылай кэши, кыска TTL (5-30 с), жеке блоктор үчүн - кардар рендер.
PSP/төлөм EndPoint: кэш жок, катуу 'no-store'; каталогдорду гана кэш (BIN-таблицалар, статустар).
Antibot: статикалык кэш/GET, шектүү ASN үчүн "боз" маршруттар; ызы-чуу аталыштары боюнча 'Vary' жол бербөө.

Киргизүү чек-тизмеси

  • Кэш ачкычы сүрөттөлгөн: URL нормалдаштыруу, query уруксат тизмеси, 'Vary' гана туура.
  • Коомдук/жеке жолдор бөлүнгөн; жеке менчик - 'no-store' жана bypass CDN.
  • мазмун түрлөрү боюнча TTL тепкичтер киргизилген; 'SWR/if-error' орнотулган.
  • орнотулган tiered-cache + origin-shield; negative-cache 5xx (кыска) кирет.
  • tag/URL purge, жумшак purge бар; CI/CD менен интеграция.
  • Компрессия киргизилген (br/gzip), сүрөттөр жана range жооптор веб-формат.
  • Метрика: hit-ratio by layer, p95 TTFB, 304 rate, origin egress; ийгиликсиз Алерта.
  • Playbook: жогорку чейин кэш жылытуу, шашылыш purge, origin деградация.

Типтүү каталар

Жок-Version Assets менен чоң TTL → "жабышып" Бандл колдонуучулар.
Ашыкча 'Vary' ('User-Agent' боюнча, бардык аталыштар) → кардиналдуулуктун жарылуусу жана төмөн hit-ratio.
4xx/401/403/жеке мазмунду кэшдоо.
Жок negative-cache → көчкү өтүнүчтөр деградация origin.
No tag-purge → массалык чекит purge жана "бороон" re-fill.
Кэш ачкычы "ызы-чуу" UTM/ref параметрлерин камтыйт.
Статика үчүн өтө кыска TTL → CDN жана origin боюнча ашыкча жүк.

Mini Playbook

1) окуя алдында кэш жылытуу

1. Top-N URL жыйноо → 2) Региондор боюнча параллелдүү prefetch (rate-limited) → 3) Текшерүү hit-ratio ↑ жана p95 ↓.

2) Өзгөчө soft-purge catologists

1. Жөнөтүү 'PURGE '/tag-clear → 2) CDN stale берет жана жаңы тартат фон → 3) origin боюнча тикенектердин жоктугун текшерүү.

3) баш origin

1. 'stale-if-error' куткарат X саат → 2) кошуу баннер "техникалык иш" боюнча edge → 3) калыбына келтирүү боюнча - максаттуу warm-up.

Жыйынтык

Күчтүү CDN стратегиясы = туура кэш ачкычы + SWR/if-error + башкарылуучу майыптык + tiered/shield + байкоо менен маанилүү TTL. Headers жана IaC саясатын чечүү, hit-ratio жана p95 өлчөө, чокулары боюнча жылытуу пландаштыруу - жана колдонуучулар ар дайым тез жооп алышат, ал эми origin да ысык саатта тирүү калат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.