कैश हेडर एनालाइज़र कैसे इस्तेमाल करें
- रिस्पॉन्स हेडर पेस्ट करें (कच्चा रिस्पॉन्स, curl -I का आउटपुट या "Name: value" पंक्तियाँ)।
- रिक्वेस्ट मेथड चुनें, और अगर पेस्ट में स्टेटस लाइन नहीं है तो स्टेटस कोड भी।
- फ़ैसला पढ़ें: रिस्पॉन्स संग्रहित होगा या नहीं, कितनी देर तक, और उसकी revalidation कैसे होगी।
- फ़ाइंडिंग में लीक (shared कैश में निजी डेटा) और आपसी विरोधाभास देखें।
- सुझाई गई नीति को शुरुआती बिंदु मानकर कॉपी करें और अवधियाँ अपने हिसाब से बदल लें।
कैश हेडर एनालाइज़र की खूबियाँ
- हर Cache-Control निर्देश समझाता है और max-age, s-maxage या Expires − Date से freshness की अवधि निकालता है
- ब्राउज़र कैश और shared कैश (CDN, प्रॉक्सी) के लिए अलग-अलग फ़ैसले
- ETag / Last-Modified, stale-while-revalidate और stale-if-error से revalidation का व्यवहार
- Vary का विश्लेषण: Accept-Encoding अपेक्षित, Cookie/User-Agent से कैश का बिखराव, Vary: * की चेतावनियाँ
- CDN हेडर की व्याख्या: cf-cache-status, x-cache, x-vercel-cache, CDN-Cache-Control, Surrogate-Control, Age
- टकराव की पहचान (no-store + max-age, public + private, कैश हो सकने वाले authenticated रिस्पॉन्स) और एक सुझाई गई नीति
कैश हेडर एनालाइज़र का उदाहरण
कुकी सेट करता हुआ public रिस्पॉन्स
इनपुट:
Cache-Control: public, max-age=600, s-maxage=3600
ETag: W/"5f8d-1a2b3c"
Vary: Accept-Encoding, Cookie
Age: 240
cf-cache-status: HIT
Set-Cookie: session=abc123; Path=/; HttpOnlyआउटपुट:
Verdict: Cacheable: fresh for 10 min in browsers and 1 h in shared caches.
Age: 4 min — 56 min of freshness remaining
High — Cache-Control: The response sets a cookie but is cacheable by shared caches — personal data may be served to other users.
Medium — Vary: Vary on Cookie fragments the cache into thousands of variants.
cf-cache-status HIT: Cloudflare served the response from its edge cache.कैश हेडर एनालाइज़र के बारे में अक्सर पूछे जाने वाले सवाल
freshness की अवधि किससे तय होती है?
Cache-Control में पहले s-maxage (सिर्फ़ shared कैश के लिए), फिर max-age, और उसके बाद Expires घटा Date। उस समय के बाद कॉपी stale हो जाती है और उसे revalidate या दोबारा fetch करना पड़ता है।
no-cache और no-store में क्या अंतर है?
no-store का मतलब है रिस्पॉन्स कहीं भी संग्रहित न करें; no-cache का मतलब है वह संग्रहित हो सकता है, पर हर बार इस्तेमाल से पहले origin से revalidate करना ज़रूरी है।
Vary क्यों मायने रखता है?
कैश सूचीबद्ध रिक्वेस्ट हेडर के हर अलग संयोजन की एक-एक कॉपी रखते हैं। Vary: Accept-Encoding अपेक्षित है; Vary: Cookie या User-Agent कैश को हज़ारों वेरिएंट में बिखेर देता है और hit ratio ख़त्म कर देता है।
कौन-से CDN हेडर समझाए जाते हैं?
cf-cache-status, x-cache, x-cache-hits, x-served-by, x-vercel-cache, CDN-Cache-Control, Cloudflare-CDN-Cache-Control, Surrogate-Control, Age और कई अन्य।
क्या यह निजी डेटा लीक होने पर चेतावनी देता है?
हाँ — जो रिस्पॉन्स कुकी सेट करता है या authenticated है, फिर भी shared कैश में कैश हो सकता है, उसे उच्च गंभीरता की फ़ाइंडिंग के रूप में बताया जाता है।
तकनीकी नोट्स
freshness RFC 9111 की प्राथमिकता के अनुसार निकाली जाती है: s-maxage सिर्फ़ shared कैश पर लागू होता है और वहाँ max-age पर हावी रहता है; max-age, Expires पर हावी रहता है; अमान्य Expires तारीख़ का मतलब है "पहले से ही stale"। आपको मिली कॉपी की बची हुई आयु दिखाने के लिए Age घटा दिया जाता है।
जब डिफ़ॉल्ट रूप से कैश हो सकने वाला स्टेटस (200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 501) बिना स्पष्ट freshness जानकारी के आता है, तो heuristic कैशिंग की सूचना दी जाती है — ऐसे में कैश ख़ुद कोई अवधि मान सकते हैं, आमतौर पर Last-Modified की उम्र का 10%।