GH GambleHub

सीडीएन कैशिंग और टीटीएल अनुकूलन

संक्षिप्त सारांश

एक सीडीएन कैश उपयोगकर्ता और मूल के बीच एक "त्वरक + ढाल" है। यह अच्छी तरह से काम करता है जब:

1. कैश कुंजी स्थिर है और इसमें कोई "शोर" नहीं है।

2. लोड के तहत टीटीएल नीति: 'एस-मैक्सेज '/' मैक्स-एज' + 'स्टेल-जबकि-एस्केलेट/इफ-त्रुटि'।

3. विकलांगता का प्रबंधन किया जाता है: टैग/उपसर्ग + "सॉफ्ट" पर्स द्वारा।

4. टायर्ड-कैश/ओरिजिनल-शील्ड और नेगेटिव-कैश शामिल हैं।

5. एक अवलोकन है: परतों द्वारा हिट-अनुपात, p95 TTFB, रिटर्न शेयर 304।

बेस हेडर और उनका क्या मतलब है

'कैश-कंट्रोल':
  • 'max-age = ' - ब्राउज़र के लिए टीटीएल।
  • 's-maxage = ' - सीडीएन/प्रॉक्सी (ओवरलैप 'मैक्स-एज') के लिए टीटीएल।
  • 'बासी-जबकि-पुनर्नवीनीकरण = ' - पुराने को बाहर दें, समानांतर में अपडेट करें।
  • 'बासी-यदि-त्रुटि = ' - मूल त्रुटि होने पर हम पुराने को वापस कर देते हैं।
  • 'अपरिवर्तनीय' - संसाधन नहीं बदलता है (लंबवत परिसंपत्तियों के लिए उपयुक्त)।
  • 'ETag '/' लास्ट-संशोधित' - 304 के लिए शर्तें, बाइट्स/सीपीयू मूल सहेजें।
  • 'वैरी' - कैश कुंजी को प्रभावित करने वाले शीर्षकों की एक सूची (संयम के साथ उपयोग करें!)।
  • 'सरोगेट-कंट्रोल' - "विस्तारित" सीडीएन के लिए कैश-कंट्रोल (यदि समर्थित हो)।
  • 'एक्सपायर' - अप्रचलित, लेकिन फिर भी ग्राहकों द्वारा जिम्मेदार है।
उदाहरण (स्टेटिक्स, वर्ष):

Cache-Control: public, max-age=31536000, immutable
उदाहरण (सुरक्षित अप्रचलन के साथ अर्ध-वक्ता):

Cache-Control: public, s-maxage=300, max-age=60, stale-while-revalidate=600, stale-if-error=86400
ETag: "a1c3..."

कैश कुंजी डिजाइन और सामान्यीकरण

लक्ष्य अनिवार्य रूप से एक ही वस्तु में गिरने के लिए समान अनुरोधों के लिए है।

URL सामान्यीकरण: केस, डबल स्लैश, अनुगामी स्लैश, क्वेरी पैरामीटर का क्रम।

"शोर" को अनदेखा करें: 'utm', 'fbclid', 'gclid', मनमाने ढंग से ref टैग।

लिमिटेड वैरी: केवल वास्तव में महत्वपूर्ण शीर्षक ('स्वीकार-एनकोडिंग', कभी-कभी 'स्वीकार करें', 'स्वीकार करें-भाषा' फोर लोकेल)।

डिवाइस-क्लास: यदि आवश्यक हो, तो 2-3 कक्षाओं (मोबाइल/डेस्कटॉप/टैबलेट) का उपयोग करें, न कि अंतहीन उपयोगकर्ता-एजेंट शाखाओं का।

Auth संदर्भ: डिफ़ॉल्ट रूप से निजी कैश न करें; हस्ताक्षरित-URL/कुकीज़-बाईपास या अलग-अलग सार्वजनिक/निजी रास्तों का उपयोग करें।

तेजी से शैली (छद्म):

Surrogate-Key: product:123 catalog
Cache-Control: public, s-maxage=300, stale-while-revalidate=600
Vary: Accept-Encoding

टीटीएल रणनीतियाँ सामग्री प्रकार द्वारा

टाइप करेंटीटीएल सीडीएन ('एस-मैक्सेज')ब्राउज़र ('अधिकतम आयु')इसके अलावा
वर्शन की गई संपत्ति ('/ऐप। a1b2। जेएस ')1 वर्ष1 वर्ष'अपरिवर्तनीय'; विकलांगता की आवश्यकता नहीं
कैटलॉग/लैंडिंग पृष्ठ1-10 मिनट30-120 एस'बासी-जबकि-पुनर्नवीनीकरण = 10-30 мин'
छवियाँ (Resays)10-60 मिनट5-15 मिनटभिन्न по 'स्वीकार करें' (वेब/एविफ़)
एपीआई प्राप्त करें (कैश)10-120 एस0-30 एसकेवल पहचान; 'स्टेल-इफ-त्रुटि' 5-60 मिनट
500/टाइमआउट त्रुटियां00ऋणात्मक-कैश 30-120 सेकंड (सीडीएन स्तर पर), कैश न करें 401/403/POST

विकलांगता नीतियाँ

URL/उपसर्ग द्वारा: "सब कुछ '/स्थिर/2025-11-05/' के तहत झाडू।

टैग/कुंजी द्वारा: "सभी 'कैटलॉग' और 'उत्पाद: 123' को हटाएं।"

सॉफ्ट पर्ज: अप्रचलित के रूप में चिह्नित करें, वस्तु को न मिटाएं - तेजी से फिर से भरना।

घटना-चालित: सीआई/सीडी या व्यवस्थापक घटना वेबहुक "अवैध टैग" को आमंत्रित करता है।

सिफारिश: दोनों रणनीति को जोड़ें: सामग्री/पृष्ठों के लिए संपत्ति + टैग-पर्ज के लिए संस्करण पथ।

टायर्ड-कैश, ओरिजिनल-शील्ड и प्रीवार्म

Tiered-cache: CDN क्षेत्रीय परतें - कम मूल अनुरोध।

उत्पत्ति-ढाल: उत्पत्ति के लिए एक "ढाल" पीओपी - स्थानीयता और हिट-अनुपात में सुधार करता है।

प्रीवार्म (प्री-लाभ): घटना/रिलीज से पहले गर्म URL/कैश गर्म करें।

नकारात्मक-कैश: कैश - थोड़े समय के लिए (30-120 एस) ताकि रेट्रास के तूफान के साथ उत्पत्ति को अभिभूत न किया जा सके।

एपीआई कैश: जब आप कर सकते हैं

केवल GET/HEAD और idempotent।

कुंजी: पथ + आवश्यक प्रश्न (उदाहरण के लिए, '? श्रेणी =... और पृष्ठ =... ')।

सत्यापन: 'ETag '/' अंतिम-संशोधित' और लघु 's-maxage'.

उपयोगकर्ता द्वारा फ़िल्टर: क्लाइंट/एज फ़ंक्शन में निजीकरण लाएं या हस्ताक्षरित-अनुरोधों + "सार्वजनिक" प्रतिक्

उदाहरण (API, 30 s + SWR):

Cache-Control: public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600
ETag: "feed-v42"

कैश विषाक्तता सुरक्षा

हार्ड यूआरएल/हेडर सामान्यीकरण; कुंजी में मापदंडों का श्वेतलिस्ट।

क्लिपिंग संदिग्ध हेडर/डुप्लिकेट ('एक्स-फोरवर्ड-', विस्तारित 'स्वीकार करें')।

'विविधता' सीमित करें और शीर्षिका के आकार/संख्या को नियंत्रित करें।

डोमेन पृथक्करण: निजी/व्यवस्थापक - बिना कैश के अलग नाम पर।

प्रतिक्रियाओं का सत्यापन: 4xx (स्थिर के लिए 404 को छोड़ कर) कैश न करें, स्पष्ट नीति के बिना "उपयोगकर्ता" पृष्ठों को कैश न करें।

संपीड़न और प्रारूप

पाठ के लिए ब्रोटली (js/css/json), gzip - fallback; पूर्व-संपीड़ित संपत्ति स्वीकार्य हैं।

चित्र: वेब/एविफ़जहाँ समर्थन; 'वैरी: स्वीकार करें' + डेरिवेटिव का उपयोग करें।

वीडियो/ऑडियो के लिए रेंज-अनुरोध: सीडीएन कैश चंक।

सामग्री-बातचीत: प्रमुख कार्डिनैलिटी को कम रखें (कच्चे यूएएस के बजाय डिवाइस-क्लास)।

अवलोकन और एसएलओ

कुंजी मेट्रिक्स

हिट-अनुपात (बाइट्स/अनुरोध द्वारा) на एज/टियर/शील्ड।

p50/95/99 क्षेत्र और प्रकार (स्थिर/एपीआई) द्वारा टीटीएफबी।

भरण-दर/उत्पत्ति - मूल में कितना जाता है।

304 दर और औसत प्रतिक्रिया आकार।

त्रुटि बजट: 'बासी-इफ-त्रुटि '/' एसडब्ल्यूआर' मुद्दों का हिस्सा; शुद्ध आवृत्ति।

एसएलओ उदाहरण

'p95 TTFB' statics क्षेत्रीय रूप से ≤ 120-150 ms, API GET कैश ≤ 200-250 ms।

एज हिट-अनुपात स्टेटिक्स ≥ 90%, अर्ध-वक्ता ≥ 60%।

त्रुटियों के साथ बासी शाखा से प्रतिक्रियाओं का प्रतिशत ≤ 0। 30 दिनों में 5%।

कॉन्फिग धोखा शीट

Nginx (CDN से पहले रिवर्स-प्रॉक्सी या स्व-PoP में)

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CDN:512m max_size=100g inactive=7d;

map $args $clean_args {
"~(^    &)(utm_    gclid    fbclid) """; # default $ args simplified example;
}

server {
listen 443 ssl http2;
set $cache_key "$scheme$request_method$host$uri?$clean_args    $http_accept    $http_accept_encoding";
location /static/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_ignore_headers Set-Cookie;
add_header Cache-Control "public, s-maxage=86400, max-age=3600, stale-while-revalidate=600" always;
proxy_pass https://origin_static;
}

location /api/public/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_cache_valid 200 30s;
add_header Cache-Control "public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600" always;
proxy_set_header If-None-Match $upstream_http_etag;
proxy_pass https://origin_api;
}
}

दूत (एसडब्ल्यूआर + नकारात्मक-कैश, अवधारणा)

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. cache. simple_http_cache. v3. SimpleHttpCacheConfig
Cache-Control/Surrogate-Control Header Cache Policies
We cache 5xx errors briefly via route/retry policy + local_rate_limit

"तेज" परिसंपत्तियों के लिए शीर्षक


Cache-Control: public, max-age=31536000, immutable
ETag: "hash"
Content-Encoding: br

अर्ध वक्ताओं के लिए शीर्षक (कैटलॉग)


Cache-Control: public, s-maxage=600, max-age=120, stale-while-revalidate=1800, stale-if-error=86400
Vary: Accept-Encoding, Accept

FinOps: कैसे नकदी पैसे बचाती है

एग्रेस मूल ↓, कम सीपीयू/डीबी लोड → कम बुनियादी ढांचे की लागत।

भुगतान बैकेंड के लिए कम अनुरोध (खोज/सूचकांक/छवियाँ)।

लक्ष्य मीट्रिक: p95 में $/कमी और 1 GB द्वारा egress में $/कमी - लॉन्च के बाद के प्रभाव को ट्रैक करें।

iGaming/fintech विशिष्ट

प्रदाता कैटलॉग/संपत्ति: वर्शन पथ + वार्षिक टीटीएल।

इवेंट/टूर्नामेंट लैंडिंग: 10-30 मिनट के लिए 1-5 मिनट 'एस-मैक्सेज' + 'एसडब्ल्यूआर'; अपग्रेड पर टैग-पर्स।

लिव पेज (गुणांक/तालिकाएं): व्यक्तिगत ब्लॉकों के लिए JSON ब्लॉकों का आंशिक कैश, छोटा TTL (5-30 s) - क्लाइंट रेंडर।

PSP/भुगतान समापन बिंदु: कैश न करें, सख्त 'नो-स्टोर'; कैश केवल संदर्भ पुस्तकें (बिन टेबल, स्टेटस)।

एंटीबॉट: स्थिर/GET कैशिंग, संदिग्ध ASN के लिए ग्रे मार्ग; शोर सुर्खियों से बाहर 'भिन्न' रखें।

कार्यान्वयन जाँच सूची

  • कैश कुंजी वर्णित: URL सामान्यीकरण, अनुमत प्रश्नों की सूची, केवल वांछित के लिए 'वैरी'।
  • सार्वजनिक/निजी रास्ते अलग हो गए; निजी - 'नो-स्टोर' और बाईपास सीडीएन।
  • सामग्री प्रकार द्वारा टीटीएल सीढ़ी; कॉन्फ़िगर 'एसडब्ल्यूआर/इफ-त्रुटि'।
  • tiered-cache + मूल-ढाल कॉन्फ़िगर; नकारात्मक-कैश 5xx (लघु) सक्षम।
  • टैग/यूआरएल पर्स, सॉफ्ट पर्स है; सीआई/सीडी के साथ एकीकरण।
  • संपीड़न (br/gzip), वेब छवि प्रारूप और रेंज प्रतिक्रियाएँ शामिल हैं।
  • मेट्रिक्स: परत द्वारा हिट-अनुपात, p95 टीटीएफबी, 304 दर, मूल अनुपात; असफलताओं के लिए अलर्ट।
  • प्लेबुक: चोटियों, आपातकालीन पर्स, मूल गिरावट से पहले कैश वार्म-अप।

सामान्य त्रुटियाँ

उपयोगकर्ताओं से एक बड़े TTL → "चिपचिपा" बंडलों के साथ गैर-वर्सियो संपत्ति।

अत्यधिक 'वैरी' ('उपयोगकर्ता-एजेंट', सभी हेडर द्वारा) - कार्डिनैलिटी का विस्फोट और कम हिट-अनुपात।

कैशिंग 4xx/401/403/निजी सामग्री।

नकारात्मक-कैश की कमी - अपमानित मूल के अनुरोधों का एक हिमस्खलन।

कोई टैग-पर्ज नहीं - बड़े पैमाने पर बिंदु पर्स और तूफान फिर से भरें।

कैश कुंजी में "शोर" UTM/ref मापदंड शामिल हैं।

स्टेटिक्स के लिए बहुत कम टीटीएल - सीडीएन और मूल पर अतिरिक्त लोड।

मिनी प्लेबुक

1) घटना से पहले कैश गर्म करें

1. लॉग → 2 द्वारा शीर्ष-एन URL एकत्र करना) क्षेत्र → 3 द्वारा समानांतर प्रीफेच (दर-सीमित)) हिट-अनुपात ↑ और p95 ↓ की जाँच करें।

2) आपातकालीन नरम-शुद्ध कैटोलॉजिस्ट

1. 'PURGE '/टैग-क्लियर → 2) सीडीएन बासी देता है और पृष्ठभूमि → 3 के साथ ताजा खींचता है) मूल पर कोई स्पाइक्स के लिए जांच करें।

3) मूल विफलता

1. 'स्टेल-इफ-त्रुटि' X घंटे → 2 में मदद करता है) किनारे पर बैनर "तकनीकी काम" को सक्षम करें → 3) वसूली पर - लक्ष्य वार्म-अप।

परिणाम

मजबूत सीडीएन रणनीति = एसडब्ल्यूआर/यदि-त्रुटि + प्रबंधित विकलांगता + टियर/शील्ड + अवलोकन के साथ सही कैश कुंजी + सार्थक टीटीएल। हेडर और IaC में नीति को ठीक करें, हिट-अनुपात और p95 को मापें, चोटियों तक गर्म करने की योजना - और उपयोगकर्ताओं को हमेशा एक त्वरित जवाब मिलेगा, और मूल सबसे गर्म घंटे में भी जीवित रहेगा।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।