एज कैश और पीओपी
1) पीओपी क्या है और "बढ़त" क्यों है
POP (उपस्थिति का बिंदु) एक सामग्री वितरण नेटवर्क (CDN/edge) नोड है जो भौगोलिक रूप से उपयोगकर्ता के करीब है। एज कैश - पीओपी में सीधे भंडारण प्रतिक्रियाओं की एक परत, जो कम करती है:- विलंबता (क्लाइंट से पहले कम आरटीटी)।
- प्रति मूल भार और लागत (ऑफ़लोड)।
- क्षेत्रों/बादलों (उत्सर्जन-बचत) के बीच यातायात।
किनारा केवल एक कैश नहीं है। आधुनिक पॉप L7 रूटिंग, WAF/बॉट फिल्टर, दर-सीमा, A/B/canaries, परिवर्तन और किनारे-गणना (स्क्रिप्ट/फ़ंक्शन) का समर्थन करते हैं।
2) एज कैशिंग आर्किटेक्चर
2. 1 फ्लैट बनाम टियर
फ्लैट: हर POP मूल में जाता है। मूल के लिए सरल लेकिन महंगा।
Tiered/Shield: POP → शील्ड POP (केंद्रीय कैश) → मूल। शील्ड कैश मिस जमा करता है, मूल के लिए एक छतरी बनाता है।
2. 2 क्षेत्रीय खंड
क्षेत्र/क्षेत्राधिकार (जीडीपीआर/डेटा स्थानीयकरण) द्वारा अलग कैशिंग डोमेन।
वेरिएंट: "ईयू-ओनली पॉप्स" और "ग्लोबल पॉप्स", अलग कुंजी/नियम।
2. 3 Anycast + विलंबता/भू-जागरूक मार्ग
Anycast BGP के माध्यम से ग्राहक को निकटतम POP में लाता है।
सक्रिय आरटीटी/त्रुटि माप पर पीओपी/क्षेत्रीय पूल के बीच जियो/लेटेंसी-अवेयर स्विच।
3) कैश कुंजी, 'वैरी', टीटीएल और ताजगी
3. 1 प्रमुख डिजाइन
प्रश्नों को सामान्य करें: क्वेरी पैरामीटर सॉर्ट करें, शोर हटाएँ (utm, ref)।
शब्दार्थ अक्ष शामिल करें: 'किरायेदार', 'लोकेल', 'स्कीमा संस्करण' ('v = 3'), लेकिन पीआईआई से बचें।
निजी सामग्री के लिए, सार्वजनिक और निजी कैश को अलग करें (देखें) 7)।
3. 2 कैश कंट्रोल (HTTP)
शीर्षक:- 'कैश-कंट्रोल: सार्वजनिक, अधिकतम आयु = 60, एस-मैक्सेज = 300, बासी-जबकि-पुनर्नवीनीकरण = 60, बासी-यदि त्रुटि = 120'
- 'ETag '/' लास्ट-मॉडिफाइड' फोर सशर्त GETs (304)।
- वैरी: कार्डिनैलिटी को कम से कम करें ('स्वीकार करें-एनकोडिंग', 'स्वीकार करें-भाषा', कभी-कभी 'प्राधिकरण '/' कुकी' फोर निजी रास्ते)।
- "नियर-स्पीकर" के लिए माइक्रो-कैश: 1-5 सेकंड + एसडब्ल्यूआर।
3. 3 बासी रणनीतियाँ
SWR (बासी-जबकि-पुनर्नवीनीकरण): पृष्ठभूमि के साथ एक पुराना उत्तर और अद्यतन दें।
SIE (बासी-यदि त्रुटि): मूल त्रुटि के मामले में, हम 'SIE' -TTL से पहले कैश का उपयोग करते हैं।
सॉफ्ट/हार्ड टीटीएल: सॉफ्ट टर्म (बासी), हार्ड (पूर्ण मिस)।
4) विकलांगता: "बढ़त" को कैसे अपडेट करें
4. 1 कुंजी और टैग द्वारा
URL/उपसर्ग द्वारा PURGE/BAN - मोटे लेकिन तेज।
सरोगेट-कुंजी/टैग: वस्तुओं को टैग आबंटित करें ('लेख: 42', 'श्रेणी: 7'), URL क्रूर बल के बिना टैग द्रव्यमान विकलांगता द्वारा प्रतिबंध।
4. 2 घटना विकलांगता
मूल में डेटा बदलते समय, घटनाओं (काफ्का/एनएटीएस) → एज अक्षम कॉल BAN/PURGE/सॉफ्ट-एक्सपायर प्रकाशित करें।
4. 3 आर्टिफ़ैक्ट वर्शनिंग
फ़ाइल नाम में स्थिर सामग्री हैश के लिए।
API के लिए, असंगत परिवर्तनों के लिए कुंजी संस्करण ('v = 4') बदलें।
5) मूल सुरक्षा और प्रदर्शन
5. 1 मूल परिरक्षण
शील्ड पीओपी को एकल मिस पॉइंट के रूप में चालू करें - मूल द्वारा तूफान को गुणा करें।
5. 2 कोलसिंग/सिंगल-फ्लाइट
किनारे पर, एक अनुरोध एक मिस पर कैश "घूंसा"; बाकी इंतजार (कोई कैच-अप भगदड़ नहीं)।
5. 3 दर-सीमा/कतार/शेडिंग на एज
यदि अधिभारित है, POP को कम-प्राथमिकता/अनाम निवेदन छोड़ें, मूल नहीं.
5. 4 हस्ताक्षरित URL/हस्ताक्षरित कुकी
उत्पत्ति किनारे के पीछे छिपी हुई है। निजी सामग्री तक पहुंच - टीटीएल और विशेषताओं (आईपी/जियो/पाथ) के साथ हस्ताक्षरित लिंक/कुकी द्वारा, ताकि "सभी" को वितरित न किया जा सके।
6) परिवहन और परिवर्तन
6. 1 HTTP/2-3 и QUIC
HTTP/2: मल्टीप्लेक्सिंग, हेडर संपीड़न।
HTTP/3/QUIC: कम HOL ताले और खोए हुए → चैनलों पर बेहतर p95/p99 TFB के नीचे।
6. 2 संपीड़न और कल्पना
पाठ के लिए ब्रोटली, छवियों के लिए एवीआईएफ/वेब, किनारे पर छवि-आकार (उत्तरदायी आकार, डीपीआर)।
प्रारूप/आकार द्वारा कैश वेरिएंट: कुंजियों में 'चौड़ाई/प्रारूप' (या 'वैरी: स्वीकार करें '/क्लाइंट-संकेत) शामिल हैं।
6. 3 TLS/0-RTT (साफ)
सत्र रीप्लेसिंग स्थापना की गति, फिर से खेलने के लिए कमजोर हो सकता है - केवल अज्ञात GETs के लिए सक्षम।
7) सार्वजनिक बनाम निजी बढ़ त कैश
7. 1 सार्वजनिक
'कैश-कंट्रोल: सार्वजनिक, एस-मैक्सेज =... 'और न्यूनतम' भिन्न '
कैटलॉग, समाचार, चित्र, सीडीएन स्थिर के लिए उपयुक्त।
7. 2 निजी/व्यक्तिगत
विकल्प:- साझा स्तर पर कैश न करें: 'कैश-कंट्रोल: प्राइवेट' (ब्राउज़र कैश).
- कुंजी-विभाजन: कुंजी में किरायेदार/उपयोगकर्ता-आईडी (या टोकन-हैश) शामिल करें और निजी-साझा (भंडारण और पीआईआई के साथ सावधान) के रूप में चिह्नित करें।
- हस्ताक्षरित कुकीज़और एज-ऑथ: कैश सार्वजनिक है, लेकिन हस्ताक्षर द्वारा पहुंच (किनारे पर एन्क्रिप्टेड सत्र स्थिति के साथ विकल्प)।
8) एज-कंप्यूट (श्रमिक/कार्य)
POP पर आसान कार्य: पथ/हेडर, A/B विभाजन, कुंजी सामान्यीकरण, SWR तर्क, पड़ोसी संसाधनों का प्रीफेच।
मिलीसेकंड संचालन के लिए पीओपी पर स्थानीय केवी/कैश एपीआई।
सीमाएं: अल्पकालिक/स्मृति, लंबे समय तक कनेक्शन की कमी, पीआईआई/क्षेत्रीयता के साथ सावधानीपूर्वक काम।
छद्म उदाहरण (श्रमिकों की तरह)
js export default {
async fetch(req, env) {
const key = normalize(req);
let res = await caches. default. match(key);
if (res) return withHitHeader(res, "HIT");
res = await fetch(req, { cf: { cacheEverything: true }});
const ttl = computeTTL(res);
eventWaitUntil(caches. default. put(key, res. clone(), { expirationTtl: ttl }));
return withHitHeader(res, "MISS");
}
}
9) कॉन्फ़िगरेशन उदाहरण
9. 1 Nginx: माइक्रो-कैश + SWR
nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api:200m inactive=30m;
map $request_method $skip_cache { default 0; POST 1; PUT 1; DELETE 1; }
server {
location /api/list {
proxy_cache api;
proxy_cache_key "$scheme://$host$uri$is_args$args";
proxy_cache_valid 200 2s; # micro-cache proxy_cache_use_stale error timeout updating;# SIE + SWR proxy_cache_background_update on;
add_header X-Edge-Cache $upstream_cache_status;
proxy_pass http://origin_pool;
}
}
9. 2 वार्निश: सरोगेट कुंजी и BAN
vcl sub vcl_recv {
if (req. method == "BAN") {
if (req. http. Surrogate-Key) {
ban("obj. http. Surrogate-Key ~ " + req. http. Surrogate-Key);
return (synth(200, "Banned"));
}
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "article:42 tag:author:7";
set resp. http. Cache-Control = "public, s-maxage=300, stale-while-revalidate=60";
}
9. 3 दूत (एज-कैश फिल्टर)
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. http. cache. simple_http_cache. v3. SimpleHttpCacheConfig
9. 4 CloudFort-शैली व्यवहार (थंबनेल)
व्यवहार A: '/images/' - लंबा TTL, संपीड़न, प्रारूपों में भिन्न होता है।
व्यवहार B: '/api/' - लघु TTL, SWR, हस्ताक्षरित कुकी, WAF/bot सुरक्षा।
ओरिजिन शील्ड सक्षम है, स्टेटस 'बासी-यदि त्रुटि'।
10) अवलोकन, एसएलओ और रिपोर्टिंग
10. 1 मेट्रिक्स
cache_hit_ratio (POP/क्षेत्र/मार्ग द्वारा), byte_hit_ratio।
origin_offload = 1 − (origin_requests/ edge_requests)।
TTFB/TTL मात्रा द्वारा, stale_responses_total, revalidations_total।
stampede_prevented_total, coalesced_waiters।
shield_hit_ratio (यदि tiered), origin_egress_bytes (लागत)।
10. 2 लॉग/ट्रेल्स
'HIT/MISS/STALE/UPDATING/BYPASS', कुंजी, TTL, POP, किरायेदार लेबल वाले लॉग।
वितरित निशान में, स्रोत ('किनारे', 'मूल') और कारण (पुनर्गठित/बासी/त्रुटि) को चिह्नित करें।
10. 3 एसएलओ उदाहरण
"Для '/api/list ': p99 TTFB ≤ 250 мс, एज ने ≥ 70%, बाइट-हिट ≥ 80%, ओरिजिनल त्रुटि-ऑफलोड ≥ 90% मारा।"
"स्टेल-इफ-त्रुटि 'की दर प्रति दिन ≤ 1% है।"
11) सुरक्षा, गोपनीयता, अनुपालन
WAF/बॉट प्रबंधन - मूल रूप से फ़िल्टरिंग के लिए किनारे पर।
डेटा की क्षेत्रीयता: केवल वैध पीओपी में निजी कलाकृतियों को संग्रहीत करें; क्षेत्र-विशिष्ट कुंजियों और एसीएल का उपयोग करें।
किनारे पर हस्ताक्षर और टोकन, सार्वजनिक कैश से निजी जवाब नहीं देते हैं।
पीआईआई न्यूनतम करना: कुंजियों में व्यक्तिगत डेटा शामिल न करें; कुकीज़को एन्क्रिप्ट करें; निजीकरण के लिए लघु टीटीएल।
12) विशिष्ट व्यंजनों
12. 1 "लगभग गतिशील" (टेप/सूची)
किनारे पर + एसडब्ल्यूआर के साथ माइक्रो-कैश 1-3, खाली परिणामों के लिए ढाल सक्षम, एकल-उड़ान, नकारात्मक-कैश 1-5 एस।
12. 2 छवि/मीडिया बादल
किनारा पुनरावृत्ति/स्वरूपण (WebP/AVIF), 'चौड़ाई/प्रारूप', लंबे टीटीएल द्वारा कैश विकल्प, सामग्री टैग द्वारा विकलांगता।
12. 3 एपीआई निजीकरण के साथ
'कैश-कंट्रोल: प्रतिक्रिया के "लगभग सार्वजनिक" भागों के लिए कुकी + की-सेगमेंट (किरायेदार), शॉर्ट टीटीएल, एसडब्ल्यूआर पर हस्ताक्षर किए।
12. 4 बड़ी बिक्री/पिक्स
प्रमुख संसाधनों (प्रीवार्म) को गर्म करना, स्टेटिक्स के लिए टीटीएल को बढ़ाना, आक्रामक एसडब्ल्यूआर/एसआईई, मूल के लिए कठिन सीमाएं, शील्ड शामिल हैं।
13) एंटी-पैटर्न
अलग-अलग प्रतिक्रियाओं के साथ 'वैरी' नहीं - लीक/गलत डेटा।
विशाल 'वैरी' कार्डिनैलिटी - कम हिट।
प्रोड/प्रयोगों के लिए सामान्य कैश - संदूषण।
कोई एकल-उड़ान नहीं - तूफान मूल पर याद आता है।
प्रतिबंध के बिना SWR - दौड़ और हिमस्खलन मान्य अनुरोध अपडेट करें।
सार्वजनिक - सुरक्षा घटनाओं के रूप में निजी प्रतिक्रियाओं का बढ़ त कैश
दुनिया भर में लोड पर टियर/शील्ड की अनुपस्थिति - मूल ओवरहीटिंग।
14) कार्यान्वयन चेकलिस्ट
- मैप पॉप कवरेज, किसी भी तरह + विलंबता-मार्ग को सक्षम करें।
- टियर/शील्ड और सिंगल-फ्लाइट/कोलेसिंग नीतियों का चयन करें।
- डिजाइन कुंजी और वैरी (न्यूनतम कार्डिनैलिटी, कोई पीआईआई नहीं)।
- टीटीएल/एसडब्ल्यूआर/एसआईई (सॉफ्ट/हार्ड टीटीएल) और नकारात्मक-कैश कॉन्फ़िगर करें।
- हस्ताक्षरित URL/कुकी सक्षम करें, मूल छिपाएँ, WAF/bot फ़िल्टर सक्षम करें।
- विकलांगता का आयोजन करें: सरोगेट-की/BAN + घटना-चालित।
- हिट/बाइट-हिट/ऑफलोड/टीटीएफबी मेट्रिक्स और प्रति-पीओपी डैशबोर्ड उठाएं।
- चोटियों से पहले वार्म-अप, तूफान/ओवरलोड के लिए रनबुक।
- गोपनीयता/क्षेत्रीयता परीक्षण, कुंजी और नीति ऑडिट।
- किनारे और TTL/SWR ऑटो-ट्विक मानदंड के लिए SLO/गलत बजट।
15) एफएक्यू
प्रश्न: किनारे पर टीटीएल कैसे चुनें?
A: अनुमेय अप्रचलन और हिट-अनुपात लक्ष्य को धक्का दें। "नियर-डायनेमिक्स" के लिए - 1-5 एस + एसडब्ल्यूआर; घटनाओं/टैग द्वारा विकलांगता के साथ निर्देशिका/चित्र - मिनट/घंटे के लिए।
प्रश्न: शील्ड पीओपी की आवश्यकता कब है?
A: वैश्विक यातायात या गर्म कुंजियों के साथ: ढाल नाटकीय रूप से मूल पर यादों को कम करता है और तरंगों को "पकड़ना" स्थिर करता है।
प्रश्न: मैं अधिकृत प्रतिक्रियाओं को कैश कैसे करूं?
A: या तो 'निजी' (ब्राउज़र), या हस्ताक्षरित कुकी/URL और कुंजी विभाजन (PII के बिना) के साथ सार्वजनिक, या आम तौर पर महत्वपूर्ण व्यक्तिगत डेटा के लिए बाईपास।
प्रश्न: HTTP/3 के साथ क्या करना है?
A: सक्षम करें: मोबाइल/खोया हुआ चैनल विशेष रूप से जीतता है। HTTP/2 पर प्रॉक्सी और फॉलबैक की संगतता को नियंत्रित करें।
16) कुल
एज कैश और पीओपी नेटवर्क उच्च गति और किफायती प्लेटफार्मों की नींव हैं। सफलता सही कुंजी और 'वैरी', उचित टीटीएल/एसडब्ल्यूआर/एसआईई, टैग/इवेंट विकलांगता, टियर/शील्ड मूल सुरक्षा, साथ ही अवलोकन (हिट/ऑफलोड/टीटीएफबी) और सुरक्षा/गोपनीयता अनुशासन द्वारा निर्धारित की जाती है। चेकलिस्ट का पालन करें - और "एज" आपका त्वरक होगा, आश्चर्य का स्रोत नहीं।