CDN և latency reduction
1) Նպատակներն ու հետաձգման քարտեզը
Latency = MS + TCP/TMS + TTFB (սերվերը/origin/cash) + բովանդակության (RTT) + հաճախորդի ռենդեր։
Օպտիմիզացիան = կրճատում ենք RTT-ի քանակը, նվազեցնում ենք բայթերը և փոխանցում ենք հաշվարկները/քեշը ավելի մոտ օգտագործողին։
2) CDN ճարտարապետությունը
Anycase POPs-ը BGP ուղղության մոտակա հանգույց է։
Tiered caching/Origin Shield-ը «հովանոցային» միջանկյալ շերտն է, որը նվազեցնում է օրիգինի վրա miss փոթորիկը։
Geo-/Regional routing-ը Tenault/իրավասության կապն է (տվյալների ինքնիշխանությունը, լիցենզիան)։
Failover-ը պահեստային օրիգինն է/տարածաշրջանը, health-փորձարկումները և արագ անջատիչը։
3) Քաշ 'բանալիներ, վերնագրեր, ռազմավարություն
3. 1 Քեշի բանալին (cache key)
Լռելյայն '
Ավելացրեք միայն անհրաժեշտ պարամետրերը («? v =», «? lang =», «? ten.ru =»)։ Մնացածը ignore-params-ում է։
«Vary» -ը նվազագույն է '«Accept-Encoding», «Accept-Language» (եթե իսկապես անհրաժեշտ է), «Authorization» -ը սովորաբար կոտրում է քեշը։
3. 2 Քաղաքականություն
Public կարգավիճակը ՝ "Cache-Corl: public, max-age = 31536000, immutable '+ rev (hash անունով)։
Պոլուդինամիկան (ստանդարտ, կանոնները, FAQ) ՝ «s-maxage = 300, stale-while-revalidate = 600, stale-if-error = 86400»։
API-GET 'օգտագործեք ETag/Lox-Modified, «SWR/SIE», միացրեք coalescing (մեկ խնդրանք տաք բանալին)։
Private: անձնական պատասխանները 'edge-comport (ESI/kv) կամ 71-տենանտ քեշի միջոցով։
3. 3 Անտի փոթորիկ
Request coalescing-ը միաժամանակ miss հարցումներ է։
Serve-stale-ը հնացած օբյեկտ տալիս է օրիգինի հավաքման ժամանակ։
Background revalidation-ը ֆոնի վրա նորարարելն է։
4) HTTP/2-3, TCP/TSA և վաղ արձակուրդ
HTTP/2 'մուլտիպլեքս, վերնագրերի սեղմում; սահմանափակեք «max concurrent streams», մեծ վերնագրեր։
HTTP/3 (QUIC), TTFB մեծ նվազումը բջջային/բարձր մակարդակներում։ հետևեք Initial-ին և Retry-ին։
TLS 1. 3: 1-RTT handshake; OCSP stapling; HSTS.
0-RTT 'միայն impotent' GET-ի համար, և եթե replay ռիսկերը հաշվի են առնվում։
Early Hints: վաղ «Link: rel = preload» կրիտիկական ռեսուրսների համար։
Preconnect / DNS-prefetch: ``.
5) Edge-compation-ը և «նուրբ կերպարը»
Եզրին 'վերնագրերի, գեո/ստենանտ-ամրագրման, A/B մակնշման, հեշտ կերպար, առանց օրիջինի դիմելու։
Կանոն 'չպահել PII-ը POP-հանգույցներում։ միայն միավորներ/հանրային տվյալներ։
6) Լրատվամիջոցների և ֆորմատների օպտիմիզացումը
Պատկերները 'ավտոմատ փոխարկումը CorP/AVIF, resize-on-edge, «www.cset/sizes», «lazyload»։
Սպիտակուցիա ՝ Brotli տեքստերի համար (HTML/CSS/JS/JSON), gzip fallback։
Տեսահոլովակը ՝ HMS/DASH, CDN-segronscaching, «preload = metadata», պաստառ։
Տառատեսակներ ՝ wwww.set + "font-play: swap '; հոգ տանել երկար քեշով։
Կրիտիկական CSS 'առաջին էկրանը։ մնացածը async է։
7) API-pattern և cashing
Idempotent GET-ը քեշիրուն է հարցման բեկորներով (ներառյալ տվյալների տարբերակը)։
ETag: ուժեղ hash ծանրաբեռնվածություն + «If-None-Match»։
Surrogate-Control (CDN հատկություններ) տարբերելու համար '"Cache-Corl' հաճախորդից։
Signed CORs-ը սովորական ստատիկայի/լրատվամիջոցների համար է։
GraphQL 'նորմալիզացրեք վիրահատության/փոփոխական բանալին։ օգտագործեք partial caching/resolver-cash։
Sockets-ը 'real-time-ի համար, կրճատեք հաղորդագրությունները, սեղմեք (permessage-windlate), տեղադրեք WS-shards ավելի մոտ օգտագործողին։
8) Միգրացիայի օրինակներ
8. 1 NGINX (origin: 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 Fastly VCL (SWR, coalescing, ignore cookies)
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 Cloudflare (Transform Rules, Cache Rules, Early Hints — псевдо)
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 + critical CSS <14 KB)։
Priority H2/H3 'առաջնահերթություններ տվեք (HTML) CSS 24JS-ը ավելի ուշ լրատվամիջոցները)։
Ռետրայի քաղաքականությունը ջիթերի, idempotency-ի համար։
Size-budgets-ը և բանդլինգը 'splitting կոդը, www.erred JS-ը, չօգտագործված CSS/JS-ի հեռացումը։
10) Դիտարկումը և SLO-ն
RUM: TTFB, LCP, INP, CLS տարածաշրջաններում/ASN/tenantam; p95/p99 բաշխումը։
Սինթետիկա '«/health/cdn »վերահսկողական երթուղին POP-am-ով։
Քաշ-մետրիկները ՝ hit-ratio overall և per-key; origin fetch rate; coalescing savings.
Ալբերտ 'hit-ratio անկում, origin-egress աճը, H3-մասնիկի քայքայումը, 5xx-ը shield-ում։
11) iGaming/ֆինանսական առանձնահատկությունները
Մոսկվան և խաղերը/գործակիցները 'կարճ' s-maxage '+ SWR; region-aware ключ (`tenant|region|lang`).
Իրադարձական պիկի (խաղեր, խաղացողներ) 'տաքացնելով քեշը (pre-warm), ծանր կերպարների «սառեցումը», mirror աղբյուրները։
Հիբրիդային/գրասենյակը 'ոչ թե մասնավոր, այլ արագացնել H3 + edge-TSA-ի և մոտիկ տարածաշրջանի միջոցով։
Իրավասություններ ՝ բաժանված ենթախմբեր/per-տարածաշրջանի ճանապարհներ; վերահսկողությունը 'Vary: X-Region'։
12) Անտիպատերնի
«Vary: » Ամեն ինչ անընդմեջ է։ քեշի բանալին կախված է ավելորդ կտորներից/վերնագրերից։
SWR/SIE-ի բացակայությունը բացատրում է «սև էկրանները» օրիգինի կարճ ձախողումների ժամանակ։
Քեշի մաքրումը «ամեն ինչի» փոխարեն թեգերի/բեկերի կետային հաշմանդամության փոխարեն։
Ռեսուրսները առանց ռուսական անունների և «max-age = 0» -ի։
Գլոբալ deny-cache-ի համար «Authorization» նույնիսկ այնտեղ, որտեղ տրվում է public-ը։
Coalescing-ի բացակայությունը բացատրում է օրիգինի փոթորիկը։
Հիբրիդային «ծանր» կերպարը POP-ի վրա։
13) Չեկ-թուղթ պատրաստակամության համար
- Anycast POP + tiered/shield; health ստուգումներ և origin failover։
- Քեշի բանալիները նվազագույն են. ավելացված query/cookies; «Surrogate-Corl»։
- SWR/SIE-ն ներառում է, coalescing ակտիվ է; server-stale սխալներով։
- HTTP/3 ներառվել է; TLS 1. 3; Early Hints-ը քննադատական ռեսուրսների համար է։
- Պատկեր: AVIF/WindoP, resize-on-edge; Brotli-ը տեքստերի համար։
- API-GET с ETag/Last-Modified; / retrai; չփորձել մասնավոր պրոֆիլներ։
- Preconnics ստատիկայի կատալոգներին; կրիտիկական CSS ինլայնը։
- Metriki: hit-ratio, origin-egress, TTFB/LCP p95, H3-մասը, տարածաշրջաններում/տենանտներում։
- Իրադարձությունների առաջ քեշը տաքացնելու պլանը. կետային հաշմանդամություն (թեգեր)։
- Windows Vary/keys/TTL; պլեյբուկ (hit-ratio անկում)։
14) TL; DR
Նվազեցրեք օրիգինի քայլերը 'tiered/shield + ճիշտ cache-keys + SWR/SIE + coalescing։ Միացրեք HTTP/3/TSA 1։ 3, օգտագործեք Early Hints և preconnations կոդերը։ Սեղմեք և վերափոխեք լրատվամիջոցները եզրին, ավելացրեք կրիտիկական CSS-ը։ API-ի համար 'ETag, կոկիկ «Vary», գաղափարախոսություն և խելացի քեշինգ «GET»։ Merit hit-ratio, TTFB/LCP p95, origin egress և նախօրոք տաքացրեք պիկի վրա։