CDN ва оптимизатсияи коҳиши таъхир
1) Ҳадафҳо ва харитаи таъхир
Таъхир = DNS + TCP/TLS + TTFB (сервер/пайдоиш/кэш) + таҳвили мундариҷа (ҳаҷми RTT ×) + пешниҳоди муштарӣ.
Оптимизатсия = шумораи RTTs-ро кам кунед, байтҳоро кам кунед ва ҳисоббарорӣ/кэшро ба корбар наздиктар кунед.
2) Меъмории CDN
POP-ҳои Anycast як гиреҳи масири BGP мебошанд.
Caching Tiered/Origin Shield - як қабати фосилавии "чатр", ки тӯфони пазмонро дар пайдоиш коҳиш медиҳад.
Масири гео-/минтақавӣ - ҳатмии иҷорагир/юрисдиксия (соҳибихтиёрии маълумот, литсензияҳо).
Нокомӣ - пайдоиши нусхабардорӣ/минтақа, намунаҳои саломатӣ ва гузариши зуд.
3) Кэш: калидҳо, сарлавҳаҳо, стратегияҳо
3. 1 Калидҳои кэш
Пешфарз 'схема + хост + роҳ +? дархост '.
Танҳо параметрҳоеро, ки мехоҳед, илова кунед ('? v = ','? lang = ','? иҷорагир = '). Боқимондаҳо дар беэътиноӣ ҳастанд.
'Vary' - ҳадди аққал: 'Қабул-рамзгузорӣ', 'Қабул-забон' (агар лозим бошад), 'Авторизатсия' кэшро ба таври оддӣ вайрон мекунад.
3. 2 Сиёсатҳо
Статикаи ҷамъиятӣ: 'Кэш-Назорат: оммавӣ, макс-синну сол = 31536000, тағйирнопазир' + rev (ҳаш дар ном).
Динамикаи нисфӣ (директорияҳо, қоидаҳо, FAQ): 's-maxage = 300, кӯҳна дар ҳоле ки-revalidate = 600, кӯҳна-агар-хато = 86400'.
API-GET: ETag/Last-Modified, 'SWR/SIE' -ро истифода баред, ангезишро фаъол созед (як дархост барои калиди гарм).
Хусусӣ: посухҳои шахсӣ - дар периметри тавассути ҳисобкунии канорӣ (ESI/kv) ё кэши ҳар як иҷорагир.
3. 3 Анти-тӯфон
Дархости муттаҳидшавӣ - шикастани дархостҳои ҳамзамон.
Хизмат-кӯҳна - вақте ки пайдоиш ноком мешавад, объекти кӯҳна диҳед.
Таҷдиди замина - навсозӣ дар замина.
4) HTTP/2-3, TCP/TLS ва бозгашти барвақт
HTTP/2: мултиплекс, фишурдани сарлавҳа; 'ҷараёнҳои ҳамзамон', сарлавҳаҳои калон.
HTTP/3 (QUIC): коҳиши назарраси талафоти мобилӣ/баланд TTFB; ба rapids ибтидоӣ ва Retry нигоҳ кунед.
TLS 1. 3: 1-RTT дасти дастӣ; Степлинги OCSP; HSTS.
0-RTT: танҳо барои idempotent 'GET' ва агар хавфҳои такрорӣ ба назар гирифта шаванд.
103 Маслиҳатҳои барвақт: Истиноди барвақт: rel = preload 'барои захираҳои муҳим.
Preconnect/DNS-prefetch: '<link rel = "preconnect" href = "https ://cdn. намуна">'.
5) Ҳисобкунии Edge ва "фардикунонии хуб"
Дар канор: барӯйхатгирии унвон, тасмими гео/иҷорагир, аломати A/B, фардикунонии осон бидуни дархости пайдоиш.
Қоида: PII-ро дар гиреҳҳои POP нигоҳ надоред; агрегатҳои кэш/танҳо маълумоти оммавӣ.
6) Оптимизатсияи ВАО ва форматҳо
Тасвирҳо: табдилдиҳии худкор ба Web-P/AVIF, андозаи тағирёбанда, 'srcset/андоза', 'lazyload'.
Фишурдасозӣ: Brotli барои матнҳо (HTML/CSS/JS/JSON), gzip fallback.
Видео: HLS/DASH, кэшкунии CDN-сегмент, 'preload = metadata', плакат.
Шрифтҳо: subset + 'намоиши ҳуруф: мубодила'; мизбон бо кэши дароз.
CSS интиқодӣ: экрани аввал; боқимондааш асинк.
7) Намунаҳои API ва кэш
Idempotent GET - мо калидҳоро дархост мекунем (аз ҷумла версияи маълумот).
ET bag: Ҳаши пурбор + 'If-None-Match'.
Surrogate-Control (CDN-мушаххас) барои фарқ кардан аз муштарии 'Cache-Control'.
URL-ҳои имзошуда - барои статикӣ/медиаи хусусӣ.
GraphQL: кэши калидро аз рӯи амалиёт/тағирёбанда муқаррар кунед; кэши қисман кэш/ҳалкунандаро истифода баред.
Web-Sockets: барои вақти воқеӣ - кӯтоҳ кардани паёмҳо, фишурдасозӣ (permessage-deflate), ҷойгиркунии WS-shards ба корбар.
8) Намунаҳои конфигуратсия
8. 1 NGINX (пайдоиш: мо кэши API-GET)
nginx
We give SWR and ETag location/api/v1/catalog/{
proxy_cache api_cache;
proxy_cache_key "$scheme$request_method$host$uri$is_args$args";
proxy_cache_valid 200 5m;
proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504;
add_header Cache-Control "public, s-maxage=300, stale-while-revalidate=600, stale-if-error=86400";
add_header ETag $upstream_http_etag;
proxy_ignore_headers Set-Cookie; # do not break the Set-Cookie proxy_hide_header cache;
proxy_pass http://catalog;
}
8. 2 VCL зуд (SWR, муттаҳидшавӣ, кукиҳоро нодида гиред)
vcl sub vcl_recv {
set req. hash_ignore_busy = true; # coalescing if (req. url. qs ~ "^(?!.(lang v)=)") { remove req. url. qs; }
if (req. http. Cookie) { remove req. http. Cookie; }
}
sub vcl_backend_response {
set beresp. ttl = 300s;
set beresp. stale_if_error = 86400s;
set beresp. stale_while_revalidate = 600s;
if (beresp. http. Set-Cookie) { unset beresp. http. Set-Cookie; }
}
8. 3 Абрнок (Қоидаҳои тағирёбанда, Қоидаҳои кэш, Маслиҳатҳои барвақт - псевдо)
json
{
"cache_rule": {
"if": "http. request. uri. path matches \"/assets/.\"",
"action": {"cache": {"eligibility":"eligible", "ttl": 31536000}}
},
"transform_rule": {
"set_headers": [{"name":"Cache-Control","value":"public, s-maxage=300, stale-while-revalidate=600"}]
},
"early_hints": {"enable": true}
}
9) Шабакаҳои мобилӣ ва интернети "ноустувор"
HTTP/3 хашмгинона истифода баред; андозаи роҳи интиқодӣ (HTML + CSS интиқодӣ <14 KB) кам кунед.
Афзалияти H2/H3: Афзалият додан (HTMl CSS → JS → media дертар).
Сиёсати бозгашт бо jitter, idempotency барои API.
Буҷаҳои андоза ва бастабандӣ: тақсимоти код, JS-и таъхиршуда, хориҷ кардани CSS/JS-и истифоданашуда.
10) Мушоҳида ва SLO
RUM: TTFB, LCP, INP, CLS аз рӯи минтақа/ASN/иҷорагирон; тақсимоти p95/p99.
Синтетика: масири назорати "/саломатӣ/cdn "аз ҷониби POP-s.
Нишондиҳандаҳои кэш: таносуби хит дар маҷмӯъ ва барои як калид; пайдоиши сатҳи таваллуд; пасандозҳои ангиштсанг.
Огоҳиҳо: тарки таносуби хит, афзоиши пайдоиши egress, таназзули H3-fraction, 5xx дар як сипар.
11) Хусусиятҳои IGaming/Finance
Каталогҳои бозӣ/эҳтимолият: кӯтоҳ 's-maxage' + SWR; минтақа-огоҳ ('иҷорагир' region 'lang').
Қуллаҳои ҳодиса (гугирдҳо, нақшҳо): гармкунии кэш (пеш аз гарм), "яхкунӣ" -и фардикунонии вазнин, манбаъҳои оина.
Пардохт/кабинет: махфиро пинҳон накунед, балки тавассути H3 + канори TLS ва минтақаи наздик суръат гиред.
Қаламравҳо: доменҳо/роҳҳои тақсимшуда дар як минтақа; 'Фарқ: X-Region' control.
12) Антипаттернҳо
'Фарқ:' дар ҳама чиз; калиди кэш аз кукиҳо/сарлавҳаҳои нолозим вобаста аст.
Набудани экранҳои SWR/SIE → барои нокомии пайдоиши кӯтоҳ.
Ба ҷои маълулияти нуқта аз рӯи барчасбҳо/калидҳо кэшро тоза кунед.
Захираҳо бидуни таҷдиди ном ва бо 'max-age = 0'.
Кэши глобалии радкунӣ барои 'Авторизатсия' ҳатто дар ҷойҳое, ки ба мардум дода мешавад.
Набудани коэффисиенти → тӯфони пайдоиш.
Фардикунонии бармаҳал "вазнин" дар POP.
13) Рӯйхати санҷиши омодагии Prod
- Anycast POP + дараҷа/сипар; санҷишҳои тиббӣ ва нокомии пайдоиш.
- Калидҳои кэш минималӣ мебошанд; дархостҳои нолозим/кукиҳоро нодида гиред; 'Назорати суррогатӣ'.
- SWR/SIE фаъол буда, фаъол аст; хизмат-кӯҳна оид ба хатогиҳо.
- HTTP/3 фаъол аст; TLS 1. 3; 103 Маслиҳатҳои барвақт барои захираҳои муҳим танзим карда мешаванд.
- Тасвирҳо: AVIF/Web Brotli барои сурудҳо.
- API-GET s ET jag/Last-Modified; idempotency/ақибнишинӣ; профилҳои хусусиро кэш накунед.
- Ба доменҳои статикӣ мувофиқат кунед; хатти CSS интиқодӣ.
- Нишондиҳандаҳо: хит-таносуб, пайдоиш-egress, TTFB/LCP p95, H3-share, аз рӯи минтақа/иҷорагир.
- Нақшаи гармкунии кэш пеш аз рӯйдодҳо; нуқтаи маъюбӣ (барчаспҳо).
- Ҳуҷҷатҳои Vary/калидҳо/TTL; китоби бозии ҳодисаҳо (тарки хит-таносуб).
14) TL; ДР
То ҳадди аққал сайёҳӣ кунед: сатҳи/сипар + калидҳои дурусти кэш + SWR/SIE +. Фурӯзон кардани HTTP/3/TLS 1. 3, 103 Маслиҳатҳои барвақт ва preconnect -ро истифода баред. Фишурдан ва табдил додани медиа дар канор, CSS интиқодӣ. Барои API - ET 'ag, тозаи' Vary ', аблаҳӣ ва кэши оқилона' GET '. Таносуби хитро чен кунед, TTFB/LCP p95, пайдоиши пайдоиш ва кэшро дар қуллаҳо пешакӣ гарм кунед.