सीडीएन और एज कैशिंग
सीडीएन और एज कैशिंग
1) उद्देश्य
सीडीएन (कंटेंट डिलीवरी नेटवर्क) विलंबता को कम करता है और मूल पर लोड करता है: एज नोड्स पर कैश स्थिर और सशर्त रूप से गतिशील सामग्री, पैमाने, स्थिरता और सुरक्षा प्रदान करता है (डीडीओएस/डब्ल्यूएएफ), एज।
2) कैश मॉडल और चाबियाँ
= 'योजना + होस्ट + पथ +? (चयनित क्वेरी पैराम्स) + हेडर (वैरी)'
अनुशंसित:- क्वेरी को सामान्य करें ('utm _' बाहर,' v ',' lang ',' देश ', आदि)।
- मिनिमाइज़ 'वैरी' (उदाहरण के लिए, 'वैरी: एक्सेप्ट-एनकोडिंग, एक्सेप्ट-लैंग्वेज'), 'वैरी:' से बचें।
- एपीआई के लिए - रूट + संस्करण पहचानकर्ता (सेवर, हैश, बिल्ड आईडी) + आवश्यक क्वेरी/हेडर (उदाहरण के लिए, 'एक्स-किरायेदार') से कुंजी।
- व्यक्तिगत पृष्ठों के लिए - एज-सेगमेंटेशन (कुकी/जियो द्वारा) या स्किप-कैश।
3) टीटीएल नीतियां और शीर्षक
आधार शीर्षक:- 'कैश-कंट्रोल: सार्वजनिक, अधिकतम आयु = 300, एस-मैक्सेज = 3600, बासी-जबकि-पुनर्नवीनीकरण = 60, बासी-यदि त्रुटि = 300'
- 'सरोगेट-कंट्रोल' (यदि समर्थित है) ब्राउज़र के अलावा सीडीएन के लिए एक अलग नीति है।
- 'ETag '/' अंतिम-संशोधित' - सशर्त अनुरोध (304) और यातायात बचत।
- निजी के लिए: 'कैश-कंट्रोल: निजी, नो-स्टोर', अगर कैश नहीं किया गया।
- एपीआई जो कैश की अनुमति देता है: 'कैश-कंट्रोल: सार्वजनिक, एस-मैक्सेज = 60' + संस्करण कुंजी।
अनुशंसित दृष्टिकोण: "अनन्त" संसाधन (फ़ाइल नाम में फिंगरप्रिंट के साथ) → 'अधिकतम आयु = 31536000, अपरिवर्तनीय'; "पृष्ठ/JSON" → लघु TTL + SWR।
4) विकलांगता: शुद्ध/सॉफ्ट-पर्ज
URL द्वारा शुद्ध: बिंदुवार।
टैग/कुंजी द्वारा शुद्ध: समूह पर्स ('सरोगेट-की: उत्पादों: 42 श्रेणी: भोजन' का उपयोग करें)।
सॉफ्ट-पर्ज: सामग्री "पुरानी" को चिह्नित करता है, एज एक नया संस्करण प्राप्त होने तक बासी देता है।
"वार्म" वार्मिंग: तैनाती के बाद, क्षेत्रों से मुख्य पृष्ठों को खींचें।
5) एज परफॉर्मेंस पैटर्न
बासी-जबकि-Revalidate: "पुरानी" कॉपी + पृष्ठभूमि अपडेट के साथ त्वरित प्रतिक्रिया।
महत्वपूर्ण संसाधनों का प्रीफेच (प्रीलोड, प्रीकनेक्ट, dns-prefetch)।
संपीडनः gzip/br (पाठ के लिए), zstd यदि CDN समर्थित है.
HTTP/2/3 (QUIC): मल्टीप्लेक्सिंग और कम विलंबता।
TLS सत्र फिर से शुरू और OCSP परिधि पर स्टेपलिंग।
6) छवियाँ और वीडियो
किनारे पर छवि अनुकूलन: आकार/प्रारूप वार्ता ('स्वीकार करें: छवि/एविफ़, वेब'), авто -WebP/AVIF, DPR- варианты।
आलसी लोड и उत्तरदायी ('srcset', 'आकार')।
वीडियो: HLS/DASH, तूफानों को कम करने के लिए खंडित MP4, मूल-ढाल (केंद्रीय कैश)।
लघुछवि सेवाओं और निजी छवियों के लिए URL पर हस्ताक्षर किए।
7) परिधि सुरक्षा
WAF: OWASP नियम, देश/ASN अवरोधक, कुंजी के साथ दर-सीमा (IP + कुकी + टोकन)।
DDoS: L3/4 स्क्रबिंग, L7 चेकर्स, JS चुनौतियां/टर्नस्टाइल।
निजी संसाधनों (वीडियो/रिपोर्ट) के लिए हस्ताक्षरित URL/कुकी: TTL + HMAC/EdDSA।
भू-बाड़लगाना और अनुपालन (उदाहरण के लिए, क्षेत्रों पर प्रतिबंध लगाना)।
8) एज-कंप्यूट (किनारे पर तर्क)
मामले:- कैश को तोड़ ने के बिना निजीकरण: खंड (ए/बी), भू, किनारे पर भाषा, और सामग्री को कैश किया जाता है।
- जवाब/शीर्षक, पुनर्लेखन, पुनर्निर्देशन, एबी विभाजन।
- टोकन-आधारित प्रमाणीकरण: JWT हस्ताक्षर सत्यापन, कुंजी बाध्यकारी।
- कुकी/प्रतिशत द्वारा कैनरी: नए बैकेंड के लिए यातायात का हिस्सा।
प्रौद्योगिकी के उदाहरणों में क्लाउडफ्लेयर वर्कर्स/ड्यूरेबल ऑब्जेक्ट्स, फास्टली कम्प्यूट @ एज, AWS लैम्ब्डा @ एज शामिल हैं।
9) मल्टी-सीडीएन और वैश्विक परिधि
कारण: कवरेज, एसएलए, लागत, क्षेत्रीय प्रतिबंध, घटनाओं का अलगाव।
जीएसएलबी/ट्रैफिक स्टीयरिंग: जियो/लेटेंसी/वास्तविक त्रुटियों पर; कई सहूलियत बिंदुओं से स्वास्थ्य-जांच।
एकल कुंजी/शीर्षक योजना (सरोगेट-कुंजी), तुल्यकालित शुद्धिकरण नियम।
मूल-ढाल सभी सीडीएन के लिए आम है ताकि विकलांग के साथ "हिट" उत्पत्ति न हो।
10) लॉगिंग और मैट्रिक्स
संग्रह करें:- हिट अनुपात (कैश, सीडीएन → एज/ओरिजिन), बाइट हिट अनुपात।
- लेटेंसी p50/p95/p99, कोड/रूट द्वारा त्रुटि-दर।
- मूल लाभ: आरपीएस/बाइट्स/त्रुटियाँ (निरर्थक यादों के खिलाफ सुरक्षा)।
- क्षेत्रीय चार्ट (POP/ASN/देश द्वारा)।
- अवलोकन के साथ एकीकृत करें: प्रोमेथियस (निर्यातकों के माध्यम से पुल), ग्राफाना/ओटेल (किनारे लॉग से धक्का)।
11) SEO и SPA/SSR
SWR और लघु TTL के साथ SEO पृष्ठ तेज और ताजा हैं।
साइटमैप/रोबोट - हम लंबे समय तक कैश करते हैं, लेकिन सॉफ्ट-पर्ज की अनुमति देते हैं।
सेवा कार्यकर्ता: ऑफ़ लाइन कैशिंग, महत्वपूर्ण रास्तों का प्रीफेच, लक्षित अपडेट।
12) नमूना विन्यास और हेडर
12. 1 कैश-कंट्रोल प्रोफाइल
फिंगरप्रिंट के साथ स्थिर:
Cache-Control: public, max-age=31536000, immutable
एचटीएमएल/एसएसआर:
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
एपीआई (कैश्ड स्टोरफ्रंट):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (मूल) - क्वेरी/हेडर सामान्यीकरण
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 तेजी से वीसीएल - सॉफ्ट-पर्ज और कुंजियाँ
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 क्लाउडफ्लेयर वर्कर्स - हस्ताक्षरित यूआरएल
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 लैम्ब्डा @ एज - जियो विकल्प
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) निजी डेटा और एपीआई
कभी भी कुंजी अलगाव (प्रति-उपयोगकर्ता/प्रति-टोकन) के बिना निजी प्रतिक्रियाओं को कैश न करें।
हस्ताक्षरित कुकीज ़/हेडर और 'Vary: सख्त नियंत्रण के साथ प्राधिकरण का उपयोग करें (अन्यथा - कैश-बस्ट)।
सुरक्षित विकल्प: सार्वजनिक परत (कैश्ड) और निजी निष्कर्ष (ईएसआई/एज रचना) को अलग करें।
14) जियो/कंटेंट नियम
लाइसेंसिंग प्रतिबंध: मूल अवरुद्ध करने के बजाय किनारे पर भू-इनकार, प्लेसहोल्डर।
आयु/नियामक बैनर - किनारे पर रेंडर (पंच कैश न करें)।
15) एंटी-पैटर्न
'नो-कैश, नो-स्टोर' पूरी साइट - सीडीएन प्रभाव का नुकसान।
'Vary' on अस्थिर हेडर (उदाहरण के लिए, 'उपयोगकर्ता-एजेंट') → कार्डिनैलिटी।
प्रत्येक रिलीज पर पूरा कैश साफ करें।
SWR के बिना लघु TTL मूल में तूफान।
विभाजन/टोकन कुंजी के बिना व्यक्तिगत पृष्ठों को कैश किया जाता है।
मूल-ढाल की कमी - कई समानांतर यादें।
16) कार्यान्वयन चेकलिस्ट (0-45 दिन)
0-10 दिन
संसाधनों को वर्गीकृत करें: अपरिवर्तनीय/एचटीएमएल/एपीआई।
gzip/br, HTTP/2/3, क्वैरी सामान्यीकरण, 'सरोगेट कुंजी' सक्षम करें.
SWR/IFE और बेस पर्ज भरें।
11-25 दिन
किनारे-छवि अनुकूलन (आकार/प्रारूप), मूल-ढाल।
निजी मीडिया, WAF/DDoS प्रोफाइल के लिए हस्ताक्षरित URL।
डैशबोर्ड: हिट अनुपात, मूल लाभ, POP द्वारा p95।
26-45 दिन
मल्टी-सीडीएन या जीएसएलबी रणनीति, परिधि पर कैनरी वजन।
विभाजन/एबी/जियो के लिए एज-कंप्यूट, कुंजियों द्वारा सॉफ्ट-पर्ज।
सीआई/सीडी में ऑटो-वार्मिंग और शुद्ध एकीकरण।
17) परिपक्वता मैट्रिक्स
बाइट ने स्थिर के लिए अनुपात ≥ 85%, HTML/सशर्त गतिशीलता के लिए ≥ 60% मारा।
मूल आरपीएस चोटियों पर स्थिर (कोई "तूफान" नहीं)।
p95 TTFB प्रमुख क्षेत्रों में ≥ 30% तक कम हो गया।
घटनाओं के लिए बासी प्रतिक्रियाओं का%> 90% (उपयोगकर्ता मुश्किल से देखा गया)।
रिलीज पाइपलाइनों में शुद्ध कुंजियों का पूर्ण स्वचालन।
18) निष्कर्ष
प्रभावी सीडीएन सर्किट कुंजी/टीटीएल/विकल्प, विकलांगता अनुशासन और किनारे तर्क है। SWR/IFE, मूल-ढाल, मीडिया अनुकूलन और मजबूत सुरक्षा (WAF, हस्ताक्षरित URL) जोड़ें। मैट्रिक्स को मानकीकृत करें और पर्स को सीआई/सीडी में एकीकृत करें - और आपको एक तेज, किफायती और स्थिर परिधि मिलती है, जो पीक लोड और काले हंस के लिए तैयार होती है।