CDN և edge-keshing
CDN և edge-keshing
1) Նպատակներ
CDN (Content Corivery Network) նվազեցնում է լատենտը և բեռը origin-ի վրա.
2) Քաշման և բանալիների մոդել
Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`
Խորհուրդ է տրվում
Նորմալացնել query («utm _» բացառել, թողնել «v», «lang», «country» և այլն)։
Նվազագույնի հասցնել «Vary» (օրինակ ՝ «Vary: Accept-Encoding, Accept-Language»), խուսափել «Vary:»։
API-ի համար - wwww.d.com (semver, hash, build id) + անհրաժեշտ query/headers (օրինակ ՝ «X-Tenae»)։
Անհատականացված էջերի համար edge-հատվածն է (cookie/geo) կամ Skip-Cache-ը։
3) TTL քաղաքականությունները և վերնագրերը
Հիմնական վերնագրերը
`Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
«Surrogate-Corl» (եթե աջակցվում է) - CDN-ի առանձին քաղաքականություն, որը տարբերվում է զննարկիչից։
«ETag »/« Last-Modified» - պայմանական հարցումներ (304) և խնայողություններ։
Մասնագետի համար '«Cache-Control: private, 71-store», եթե չեք կարող կանխել։
API-ն, որը թույլ է տալիս քեշը '"Cache-Corl: public, s-maxage = 60' + բանալին համաձայն։
Վերջնական մոտեցումը '"հավերժական" ռեսուրսներ (ֆայլի անունով fingerprint) www.max-age = 31536000, imutable "; «ԷՋ/JSON» -ը կարճ TTL + SWR է։
4) Հաշմանդամություն 'purge/soft-purge
Purge by URL: կետային։
Purge by no/key: Խմբակային մաքրումներ (օգտագործեք «Surrogate-Key: 108:42 category: food»)։
Soft-purge: նշում է «հնացած» բովանդակությունը, edge տալիս է stale մինչև նոր տարբերակը։
«Ջերմ» տաքացումն է, այն բանից հետո, երբ ապշեցուցիչ է տարածաշրջաններից հիմնական էջերը։
5) Edge-patters արտադրողականության
Stale-While-Revalidate: արագ պատասխանը «հնացած» պատճենով + ֆոնային նորարարություն է։
Profetch կրիտիկական ռեսուրսներ (preload, preconnect, 112-210 fetch)։
Compression: gzip/210 (տեքստային), zstd, եթե աջակցվի CDN-ին։
HTTP/2/3 (QUIC) 'բազմաբնույթ և ավելի քիչ լատենտ։
TMS session resumption և OCMS stapling պարագծի վրա։
6) Պատկերներ և տեսահոլովակներ
Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Video: HMS/DASH, fragmented MP4, origin-shield (կենտրոնական քեշը) կրճատելու համար։
Thumbnail-ծառայությունները և signed CORs-ը մասնավոր պատկերների համար։
7) Պարագծի անվտանգությունը
WAF: OWASP կանոնները, երկրների/ASN, rate-limits բանալին (IP + cookie + token)։
DDoS: L3/4 scrubbing, L7-chekers, JS-chelengi/turnstile։
Ստորագրված URL/կտորներ մասնավոր ռեսուրսների համար (վիդեո/հաշվետվություններ) 'TTL + HMAC/EddDSA։
Geo-fencing և complaens (օրինակ, տարածաշրջանների արգելքը)։
8) Edge-comport (տրամաբանությունը եզրին)
Քեյսներ
Կերպարացում առանց քեշի 'հատվածներ (A/B), գեո, լեզուն edge-ում, իսկ բովանդակությունը' քեշիրացված։
Պատասխանների/վերնագրերի վերաշարադրումը, ռեդիրետները, AB-սպլիտները։
Հոսքային վավերացում 'JWT ստորագրության ստուգում, կապում բանալին։
Canary cookie/percent: Մրցույթի մի մասը նոր backend է։
Տեխնոլոգիաների օրինակներ ՝ Cloudflare Workers/Durable Objects, Fastly Compant @ Edge, AWS Lambda @ Edge։
9) Multi-CDN և գլոբալ պարիմետր
Պատճառները 'ծածկումը, SLA, արժեքը, տարածաշրջանի սահմանափակումները, հյուրանոցների մեկուսացումը։
GSLB/Traffic Steering: geo/latency/իրական սխալներով; health-ks մի քանի vantage կետերից։
Մեկ բանաձևի/վերնագրերի սխեմա (Surrogate-Key), համաժամեցված purge կանոնները։
Origin-shield-ը ընդհանուր է բոլոր CDN-ի համար, որպեսզի չվնասի origin-ը հաշմանդամության ժամանակ։
10) Տրամաբանություն և չափումներ
Հավաքեք
Hit ratio (cache, CDN → edge/origin), byte hit ratio.
Latency p50/p95/p99, error-rate կոդով/երթուղով։
Origin fetches: RPS/բայթ/սխալներ (պաշտպանություն ավելցուկ բացթողումներից)։
Տարածաշրջանային գրաֆիկները (POP/ASN/երկրում)։
Ինտեգրվեք Observability-ի հետ 'Prometheus (օպերատորների միջոցով), Grafana/OTel (push edge-logs)։
11) SEO и SPA/SSR
SEO էջերը SWR և կարճ TTL - արագ և «թարմ»։
Sitemap/robots-ը երկար ժամանակ է, բայց թույլ տվեք soft-purge։
Intel Worker: wwwww.int-cashing, wwww.fetch կրիտիկական ճանապարհներ, նորարարությունների իրականացում։
12) Ներարկումների և վերնագրերի օրինակներ
12. 1 Cache-Corl պրոֆիլներ
Կարգավիճակը fingerprint-ից
Cache-Control: public, max-age=31536000, immutable
HTML/SSR:
Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (քշված վիտրինը)
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (origin) - query/headers նորմալացումը։
nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^ &)v=([a-z0-9]+)(& $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";
12. 3 Fastly VCL - sox-purge և բանալիներ
vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}
12. 4 Cloudflare Workers - URL ստորագրած
js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}
12. 5 Lambda @ Edge - գեո տարբերակներ
js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value 'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};
13) Մասնավոր տվյալները և API-ը
Երբեք մի քշեք մասնավոր պատասխանները առանց ստեղնաշարի մեկուսացման (նախկին օգտագործողը/105-toxen)։
Օգտագործեք Signed Cookies/Headers և 'Vary: Authorization' միայն խիստ վերահսկման ժամանակ (հակառակ դեպքում 'cache-bust)։
Անվտանգ այլընտրանք 'բաժանեք հանրային շերտը (քեշիրացված) և մասնավոր ինկուլիդները (ESI/edge-2019)։
14) Գեո/բովանդակության կանոնները
Պոլիոնային սահմանափակումները 'geo-deny edge, pleisholders' origin արգելափակման փոխարեն։
Տարիքային/կարգավորող բանկերը ռենդեր են edge-ում (չփչացնել քեշը)։
15) Anti-patterna
'108-cache, 108-store "ամբողջ կայքի համար CDN-էֆեկտի կորուստ է։
«Vary» -ը անկայուն վերնագրերով (օրինակ ՝ «User-Agent») կարդինալություն է։
Ամբողջ քեշի մաքրումը յուրաքանչյուր օրինակով։
Կարճ TTL-ն առանց SWR-ի նշվում է «փոթորիկ» origin-ում։
Անձնական էջերը տեղադրվում են առանց սեգմենտացիայի/token-2019։
Origin-shield-ի բացակայությունը շատ զուգահեռ բաց է։
16) Chek-Show-( 0-45 օր)
0-10 օր
Նվազեցնել ռեսուրսները 'ստատիկա (imutable )/HTML/API։
Ներառել gzip/no, HTTP/2/3, query, «Surrogate-Key» նորմալիզացիան։
Ներդրել SWR/IFE և հիմնական purge։
11-25 օր
Edge-օպտիմիզացիան (resize/medat), origin-shield։
Ստորագրված URL-ը մասնավոր լրատվամիջոցների համար, WAF/DDoS-պրոֆիլներ։
Dashbords: hit ratio, origin fetches, p95 POP-ով։
26-45 օր
Multi-CDN-ը կամ GSLB-ռազմավարությունը, քարարեյի քաշը պարագծի վրա։
Edge-compations-ը/AV/geo, soft-purge բաների համար։
Avto-purge-ը և purge ինտեգրումը CI/CD-ում։
17) Հասունության մետրերը
Byte hit ratio-ը ստատիկայի համար 85 տոկոսն է, որը կազմում է 60 տոկոսը HTML/պայմանական դինամիկայի համար։
Origin RPS-ը կայուն է գագաթնակետին (ոչ «փոթորիկներ»)։
P95 TTFB կրճատվել է 30 տոկոսով հիմնական տարածաշրջաններում։
պատասխանների% -ը պատահականության ժամանակ> 90% (օգտագործողը գրեթե չի նկատել)։
Ամբողջական ավտոմատիզացիան purge-ի մասերում է։
18) Եզրակացություն
CDN ստանդարտը բանալիներ/TTL/տարբերակներ, հաշմանդամության կարգապահություն և edge տրամաբանություն։ Ավելացրեք SWR/IFE, origin-shield, լրատվամիջոցների օպտիմիզացումը և խիստ անվտանգությունը (WAF, ստորագրված URL)։ Ստանդարտացրեք չափումները և ինտեգրեք purge-ը CI/CD-ում, և կստանաք արագ, տնտեսական և կայուն պարիմետր, որը պատրաստ է գագաթնակետային բեռներին և սև կարապներին։