HTTP Caching में Cache-Control और ETag को समझना

HTTP Caching में Cache-Control और ETag को समझना

वेब संसाधनों को प्रबंधित करने के लिए ये हेडर्स एक साथ कैसे काम करते हैं, इस पर एक उपयोगी गाइड।

अपने ब्राउज़र का नेटवर्क टैब खोलें, और आपको अक्सर Cache-Control और ETag images, stylesheets और scripts के response headers में देखने को मिलेंगे। हालांकि कई डेवलपर्स इन शब्दों को पहचानते हैं, लेकिन बहुत कम यह समझा सकते हैं कि वे कैशिंग में एक साथ कैसे काम करते हैं। इन हेडर्स को समझना महत्वपूर्ण है क्योंकि वेब परफ़ॉर्मेंस डेवलपर्स के लिए प्राथमिकता बनी हुई है।

HTTP Caching क्या है?

HTTP caching किसी ब्राउज़र या Content Delivery Network (CDN) को अपने द्वारा प्राप्त किए गए रिस्पॉन्स, जैसे कि कोई इमेज या स्क्रिप्ट, को स्टोर करने की अनुमति देती है। उसी रिसोर्स के लिए सर्वर से दोबारा अनुरोध करने के बजाय, ब्राउज़र स्टोर किए गए वर्शन का फिर से उपयोग कर सकता है। इससे पेज लोड होने का समय तेज़ होता है और सर्वर का लोड कम होता है। हालांकि, उचित निर्देशों के बिना, ब्राउज़र यह अनुमान लगा सकते हैं कि क्या कोई कैश्ड रिस्पॉन्स अभी भी मान्य है, जिससे विसंगतियां हो सकती हैं।

वह समस्या जिसे ये हेडर्स हल करते हैं

Cache-Control और ETag सर्वर से स्पष्ट निर्देश प्रदान करके अनुमान लगाने की आवश्यकता को समाप्त करने में मदद करते हैं। वे दो अलग-अलग प्रश्नों के उत्तर देते हैं:

  • Cache-Control: "आप मुझसे पूरी तरह दोबारा पूछना कब तक छोड़ सकते हैं?"
  • ETag: "एक बार जब वह अवधि समाप्त हो जाए, तो आप कम लागत में यह कैसे जांच सकते हैं कि क्या वास्तव में कुछ बदला है?"

Cache-Control क्या नियंत्रित करता है

यह Cache-Control हेडर नियम निर्धारित करता है कि किसी रिसोर्स को कितने समय तक कैश किया जा सकता है। उदाहरण के लिए, यदि कोई सर्वर इस हेडर के साथ रिस्पॉन्स भेजता है:

Cache-Control: public, max-age=2592000, immutable

इसका मतलब है:

  • public: रिसोर्स को किसी भी कैश द्वारा कैश किया जा सकता है, जिसमें CDN जैसे शेयर्ड कैश भी शामिल हैं।
  • max-age=2592000: रिसोर्स 30 दिनों (2,592,000 सेकंड) के लिए फ्रेश रहता है। इस दौरान, ब्राउज़र को सर्वर से संपर्क करने की आवश्यकता नहीं होती है।
  • immutable: इस फ्रेशनेस अवधि के दौरान कंटेंट नहीं बदलेगा, इसलिए ब्राउज़र बिना जांच किए कैश्ड वर्शन का उपयोग कर सकता है।

डायरेक्टिव immutable का उपयोग केवल तभी सुरक्षित है जब URL हमेशा एक ही कंटेंट की ओर इंगित करेगा।

ETag क्या नियंत्रित करता है

एक बार max-age की अवधि समाप्त हो जाने के बाद, ब्राउज़र कैश्ड कॉपी को हटाता नहीं है। इसके बजाय, यह देखने के लिए सर्वर से जांच करता है कि क्या पुरानी कॉपी अभी भी मान्य है। यहीं पर ETag काम आता है। एक ETag एक यूनीक पहचानकर्ता है, जो आमतौर पर कंटेंट का एक हैश होता है। यदि कंटेंट बदलता है, तो ETag भी बदल जाता है। यहाँ बताया गया है कि यह कैसे काम करता है:

  1. सर्वर एक ETagके साथ रिस्पॉन्स देता है, उदाहरण के लिए, ETag: "abc123".
  2. ब्राउज़र इस वैल्यू को याद रखता है। जब कैश्ड कॉपी एक्सपायर हो जाती है, तो यह इसके साथ रिक्वेस्ट भेजता है: If-None-Match: "abc123".
  3. सर्वर वर्तमान ETagकी जांच करता है। यदि यह नहीं बदला है, तो यह 304 Not Modifiedके साथ जवाब देता है, जिससे ब्राउज़र रिसोर्स को फिर से डाउनलोड किए बिना अपनी कैश्ड कॉपी का उपयोग जारी रख सकता है।

यह प्रक्रिया बैंडविड्थ बचाती है और लोड होने के समय को तेज़ करती है।

कुछ प्रोजेक्ट्स ETag को क्यों छोड़ देते हैं

कुछ मामलों में, जैसे कि ogp-generator.php प्रोजेक्ट में, ETag का उपयोग करना अनावश्यक लग सकता है। यह प्रोजेक्ट पोस्ट के अंतिम संशोधित समय के आधार पर प्रत्येक इमेज के लिए एक यूनीक फ़ाइल नाम जेनरेट करता है। इस तकनीक को cache busting के रूप में जाना जाता है, जो यह सुनिश्चित करती है कि जब भी पोस्ट को संपादित किया जाए, तो URL बदल जाए। इसलिए, ETag की कोई आवश्यकता नहीं है क्योंकि URL स्वयं गारंटी देता है कि कंटेंट नया है।

निष्कर्ष

Cache-Control और ETag वेब डेवलपमेंट में कैशिंग को प्रबंधित करने के लिए दोनों ही आवश्यक हैं, लेकिन वे अलग-अलग उद्देश्यों को पूरा करते हैं। Cache-Control यह तय करता है कि किसी रिसोर्स को कितने समय तक कैश किया जा सकता है, जबकि ETag यह पुष्टि करने में मदद करता है कि क्या कैशिंग अवधि के बाद कंटेंट बदल गया है।

लाभ

  • सर्वर रिक्वेस्ट को कम करके वेब परफ़ॉर्मेंस में सुधार करता है।
  • अनावश्यक डाउनलोड को रोककर बैंडविड्थ बचाता है।
  • ब्राउज़र और CDN को स्पष्ट कैशिंग निर्देश प्रदान करता है।

कमियां

  • गलत कॉन्फ़िगरेशन के कारण पुराना (stale) कंटेंट सर्व हो सकता है।
  • यह सुनिश्चित करने के लिए सावधानीपूर्वक प्रबंधन की आवश्यकता होती है कि URL सही कंटेंट की ओर इंगित करें।

सावधानी

यह लेख शैक्षिक उद्देश्यों के लिए है। अपने एप्लिकेशन्स में हमेशा प्लेसहोल्डर वैल्यूज को वास्तविक डेटा से बदलें। किसी भी दावे पर भरोसा करने से पहले मूल स्रोत से उसकी पुष्टि करें।

अक्सर पूछे जाने वाले प्रश्न

  • Cache-Control क्या है? — Cache-Control एक HTTP हेडर है जो यह निर्दिष्ट करता है कि किसी रिसोर्स को कितने समय तक और किन स्थितियों में कैश किया जा सकता है।
  • ETag का क्या अर्थ है? — ETag का मतलब Entity Tag है, जो किसी रिसोर्स के एक विशिष्ट वर्शन के लिए एक यूनीक पहचानकर्ता है।
  • Cache-Control परफ़ॉर्मेंस को कैसे बेहतर बनाता है? — यह ब्राउज़र को रिसोर्सेज को कैश करने की अनुमति देता है, जिससे सर्वर पर बार-बार अनुरोध भेजने की आवश्यकता कम हो जाती है।
  • मुझे ETag का उपयोग कब करना चाहिए? — ETag का उपयोग तब करें जब आप कुशलतापूर्वक यह सत्यापित करना चाहते हैं कि क्या कोई कैश्ड रिसोर्स अपनी फ्रेशनेस अवधि के बाद बदल गया है।
  • Cache busting क्या है? — Cache busting एक ऐसी तकनीक है जो किसी रिसोर्स के कंटेंट में बदलाव होने पर उसका URL बदल देती है, जिससे यह सुनिश्चित होता है कि उपयोगकर्ताओं को अपडेटेड वर्शन मिले।
  • क्या मैं ETag के बिना Cache-Control का उपयोग कर सकता हूँ? — हाँ, आप अकेले Cache-Control का उपयोग कर सकते हैं, लेकिन ETag कैशिंग के बाद कंटेंट के फ्रेश होने की पुष्टि करने का एक तरीका प्रदान करता है।

टैग

#http #caching #webdevelopment #performance #etag #cachecontrol #webdesign #frontend #backend #optimization

Free field guide

Prompt-Injection Defense Checklist

The controls that actually reduce the blast radius when your app feeds untrusted text to an LLM. Enter your email — you'll get the PDF instantly, plus new posts on AI, security & Linux.