सीडीएन और विलंबता में कमी अनुकूलन
1) लक्ष्य और देरी का नक्शा
लेटेंसी = DNS + TCP/TLS + TTFB (सर्वर/ओरिजिनल/कैश) + कंटेंट डिलीवरी (RTT × वॉल्यूम) + क्लाइंट रेंडर।
अनुकूलन = आरटीटी की संख्या कम करें, बाइट्स को कम करें, और उपयोगकर्ता के करीब गणना/कैश को स्थानांतरित करें।
2) सीडीएन वास्तुकला
Anycast POPs एक निकट-अंत BGP रूटिंग नोड है।
टियर्ड कैशिंग/ओरिजिनल शील्ड - एक "छाता" मध्यवर्ती परत जो मूल पर मिस तूफान को कम करती है।
भू -/क्षेत्रीय मार्ग - किरायेदार/अधिकार क्षेत्र का बंधन (डेटा संप्रभुता, लाइसेंस)।
असफलता - बैकअप मूल/क्षेत्र, स्वास्थ्य नमूने और तेजी से स्विच।
3) कैश: कुंजी, हेडर, रणनीतियाँ
3. 1 कैश कुंजी
डिफ़ॉल्ट है 'योजना + होस्ट + पथ +? प्रश्न '।
सिर्फ पैरामीटर जोड़ें जो आप चाहते हैं ('? v = ','? लैंग = ','? किरायेदार = ')। बाकी अनदेखी-परम में हैं।
'वैरी' - न्यूनतम: 'स्वीकार करें-एनकोडिंग', 'स्वीकार करें-भाषा' (यदि आवश्यक हो), 'प्राधिकरण' कैश को तोड़ ता है।
3. 2 नीतियां
सार्वजनिक स्टैटिक्स: 'कैश-कंट्रोल: सार्वजनिक, अधिकतम आयु = 31536000, अपरिवर्तनीय' + रेव (नाम में हैश)।
अर्ध-गतिकी (निर्देशिका, नियम, FAQ): 's-maxage = 300, बासी-जबकि-पुनर्नवीनीकरण = 600, बासी-यदि त्रुटि = 86400'।
API-GET: ETag/Last-Modified, 'SWR/SIE' का उपयोग करें, colessing (एक गर्म कुंजी के लिए एक अनुरोध) सक्षम करें।
निजी: व्यक्तिगत प्रतिक्रियाएं - एज-कंप्यूट (ईएसआई/केवी) या प्रति-किरायेदार कैश के माध्यम से परिधि पर।
3. 3 तूफान विरोधी
अनुरोध करें - एक साथ मिस अनुरोध को समाप्त करें।
सेवा-बासी - मूल विफल होने पर एक पुरानी वस्तु दें।
पृष्ठभूमि पुनर्मूल्यांकन - पृष्ठभूमि में अद्यतन
4) HTTP/2-3, टीसीपी/टीएलएस और जल्दी वापसी
HTTP/2: मल्टीप्लेक्स, हेडर संपीड़न; सीमा 'मैक्स समवर्ती धाराएँ', बड़े हेडर।
HTTP/3 (QUIC): मोबाइल/उच्च हानि TTFB में बड़ी कमी; प्रारंभिक-रैपिड्स और रेट्री पर नजर रखें।
टीएलएस 1। 3: 1-RTT हैंडशेक; OCSP स्टेपलिंग; HSTS।
0-RTT: केवल अज्ञात 'GET' के लिए और यदि रीप्ले जोखिम पर विचार किया जाता है।
103 प्रारंभिक संकेत: महत्वपूर्ण संसाधनों के लिए प्रारंभिक 'लिंक: rel = preload'।
प्रीकनेक्ट/डीएनएस-प्रीफेच: ''।
5) एज-कंप्यूट और "ठीक निजीकरण"
किनारे पर: शीर्षक जनगणना, भू/किरायेदार निर्धारण, ए/बी अंकन, एक मूल के लिए पूछे बिना आसान निजीकरण।
नियम: POP नोड्स पर PII संग्रहीत न करें; कैश एग्रीगेट/सार्वजनिक डेटा केवल।
6) मीडिया और प्रारूपों का अनुकूलन
चित्र: WebP/AVIF में स्वचालित रूपांतरण, आकार-पर-किनारे, 'srcset/आकार', 'lazyload'।
संपीड़न: ग्रंथों के लिए ब्रोटली (HTML/CSS/JS/JSON), gzip फॉलबैक।
वीडियो: एचएलएस/डीएएसएच, सीडीएन-सेगमेंट कैशिंग, 'प्रीलोड = मेटाडेटा', पोस्टर।
फ़ॉन्ट: सबसेट + 'फ़ॉन्ट-डिस्प्ले: स्वैप'; लंबे कैश के साथ मेजबान।
क्रिटिकल सीएसएस: इनलाइन प्रथम स्क्रीन; बाकी async है।
7) एपीआई पैटर्न और कैशिंग
Idempotent GET - हम अनुरोध कुंजी (डेटा संस्करण सहित) द्वारा कैश करते हैं।
ETag: मजबूत पेलोड हैश + 'इफ-नो-मैच'।
सरोगेट-नियंत्रण (CDN-विशिष्ट) 'Cache-Control' ग्राहक से अंतर करने के लिए।
हस्ताक्षरित यूआरएल - निजी स्थिर/मीडिया के लिए।
GraphQL: ऑपरेशन/चर द्वारा कुंजी कैश को सामान्य करें; आंशिक कैशिंग/रिज़ॉल्यूशन कैश का उपयोग करें।
WebSockets: वास्तविक समय के लिए - छोटा संदेश, संपीड़ित (परमिसेज-डिफ्लेट), उपयोगकर्ता के करीब 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 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 बाद में)।
एपीआई के लिए जिटर, आइडेम्पोटेंसी के साथ रिट्रे पॉलिसी।
आकार-बजट और बंडलिंग: कोड-विभाजन, आस्थगित जेएस, अप्रयुक्त सीएसएस/जेएस को हटाना।
10) अवलोकन और एसएलओ
RUM: TTFB, LCP, INP, CLS क्षेत्र/ASN/किरायेदारों द्वारा; p95/p99 वितरण।
सिंथेटिक्स: POP-s द्वारा नियंत्रण मार्ग "/स्वास्थ्य/cdn "।
कैश मेट्रिक्स: हिट-अनुपात समग्र और प्रति-कुंजी; मूल लाने की दर; colessing बचत।
अलर्ट: हिट-अनुपात ड्रॉप, ओरिजिनल-एग्रेस वृद्धि, H3-fraction गिरावट, 5xx प्रति ढाल।
11) आईगेमिंग/वित्त की विशिष्टताएं
गेम कैटलॉग/ऑड्स: शॉर्ट 'एस-मैक्सेज' + एसडब्ल्यूआर; क्षेत्र-जागरूक - ('किरायेदार' रीजियन 'लैंग')।
घटना चोटियों (मैच, ड्रॉ): कैश वार्मिंग (पूर्व-गर्म), भारी निजीकरण, दर्पण स्रोतों का "ठंड"।
भुगतान/कैबिनेट: निजी कैश न करें, लेकिन H3 + एज-TLS और करीबी क्षेत्र के माध्यम से तेजी लाएं।
न्यायालय: विभाजित डोमेन/पथ प्रति-क्षेत्र; 'वैरी: एक्स-रीजन' कोंट्रोल।
12) एंटीपैटर्न
'वैरी: ' सब कुछ पर; कैश कुंजी अनावश्यक कुकीज ़/हेडर पर निर्भर करती है।
SWR/SIE की कमी - छोटी मूल विफलताओं के लिए काली स्क्रीन।
टैग/कुंजी द्वारा बिंदु विकलांगता के बजाय कैश "ऑल ओवर" साफ करें।
नाम संशोधन के बिना और 'अधिकतम आयु = 0' के साथ संसाधन।
'प्राधिकरण' के लिए वैश्विक इनकार-कैश यहां तक कि जहां सार्वजनिक दिया जाता है।
मूल पर कोलसिंग की कमी - तूफान।
POP पर समय से पहले "भारी" निजीकरण।
13) प्रोड रेडीनेस चेकलिस्ट
- Anycast POP + tiered/shield; स्वास्थ्य जांच और मूल विफलता।
- कैश कुंजी न्यूनतम हैं; अनावश्यक प्रश्नों/कुकीज़को अनदेखा करें; 'सरोगेट-कंट्रोल'।
- SWR/SIE सक्रिय, सक्रिय; त्रुटियों पर सेवा-बासी।
- HTTP/3 सक्षम; टीएलएस 1। 3; 103 प्रारंभिक संकेत महत्वपूर्ण संसाधनों के लिए कॉन्फ़िगर किए
- चित्र: AVIF/WebP, नया आकार-प्रकार; गीत के लिए ब्रोटली।
- API-GET с ETag/Last-Modified; पहचान/पीछे हटना; निजी प्रोफाइल कैश न करें।
- स्थैतिक डोमेन के लिए प्रीकनेक्ट करें; महत्वपूर्ण सीएसएस इनलाइन।
- मेट्रिक्स: हिट-रेशियो, ओरिजिनल-एग्रेस, TTFB/LCP p95, H3-share, क्षेत्र/किरायेदार द्वारा।
- घटनाओं से पहले कैश वार्म-अप योजना; बिंदु विकलांगता (टैग)।
- भिन्न/कुंजी/टीटीएल प्रलेखन; घटनाओं की प्लेबुक (हिट-अनुपात ड्रॉप)।
14) टीएल; डीआर
एक मूल को न्यूनतम करने के लिए लंबी पैदल यात्रा करें: tiered/ढाल + उचित कैश-कुंजी + SWR/SIE + colessing। HTTP/3/TLS 1 चालू करें। 3, 103 प्रारंभिक संकेत और प्रीकनेक्ट का उपयोग करें। किनारे पर मीडिया को संपीड़ित करें और परिवर्तित करें, इनलाइन CSS। API - ETag के लिए, साफ-सुथरा 'वैरी', पहचान और उचित कैशिंग 'GET'। हिट-अनुपात, TTFB/LCP p95, मूल उत्सर्जन और चोटियों पर पहले से कैश को गर्म करें।