HTTP
कैशिंग HTTP प्रतिक्रियाएँ
खोज…
टिप्पणियों
प्रत्येक URL और प्रत्येक HTTP विधि के लिए अलग-अलग कैश किया जाता है।
HTTP कैशिंग RFC 7234 में परिभाषित किया गया है ।
शब्दकोष
- ताजा - एक कैश्ड प्रतिक्रिया की स्थिति, जो अभी तक समाप्त नहीं हुई है। आमतौर पर, एक ताज़ा प्रतिक्रिया सर्वर से प्रतिक्रिया की आवश्यकता के बिना अनुरोधों को संतुष्ट कर सकती है।
- बासी - एक कैश्ड प्रतिक्रिया की स्थिति, जो इसकी समाप्ति तिथि से अधिक है। आमतौर पर, बासी प्रतिक्रियाओं का उपयोग सर्वर के साथ जांच के बिना अनुरोध को संतुष्ट करने के लिए नहीं किया जा सकता है कि क्या यह अभी भी मान्य है।
- संतुष्ट - कैश्ड प्रतिक्रिया एक अनुरोध को संतुष्ट करती है जब अनुरोध में सभी शर्तें कैश्ड प्रतिक्रिया से मेल खाती हैं, जैसे कि उनके पास एक ही HTTP विधि और URL है, प्रतिक्रिया ताज़ा है या अनुरोध बासी प्रतिक्रियाओं की अनुमति देता है, हेडर प्रतिक्रिया के
Vary
हेडर, आदि में सूचीबद्ध हेडर से मेल खाते हैं। । - पुनरावर्तन - जाँच करना कि क्या कैश्ड प्रतिक्रिया ताज़ा है। यह आमतौर पर एक सशर्त अनुरोध के साथ किया जाता है जिसमें
If-Modified-Since
याIf-None-Match
और प्रतिक्रिया की स्थिति304
। - निजी कैश - एकल उपयोगकर्ता के लिए कैश, जैसे वेब ब्राउज़र में। निजी कैश व्यक्तिगत प्रतिक्रियाएं संग्रहीत कर सकते हैं।
- सार्वजनिक कैश - कई उपयोगकर्ताओं के बीच साझा किया गया कैश, जैसे प्रॉक्सी सर्वर में। ऐसा कैश कई उपयोगकर्ताओं को एक ही प्रतिक्रिया भेज सकता है।
1 साल के लिए सभी के लिए कैश प्रतिक्रिया
Cache-Control: public, max-age=31536000
public
अर्थ है कि प्रतिक्रिया सभी उपयोगकर्ताओं के लिए समान है (इसमें कोई व्यक्तिगत जानकारी नहीं है)। max-age
अब से कुछ सेकंड में है। 31536000 = 60 * 60 * 24 * 365।
यह स्थिर परिसंपत्तियों के लिए अनुशंसित है जो कभी भी बदलने के लिए नहीं हैं।
1 मिनट के लिए कैश व्यक्तिगत प्रतिक्रिया
Cache-Control: private, max-age=60
private
निर्दिष्ट करता है कि प्रतिक्रिया केवल उस उपयोगकर्ता के लिए कैश की जा सकती है जिसने संसाधन का अनुरोध किया है, और जब अन्य उपयोगकर्ता उसी संसाधन का अनुरोध करते हैं तो उनका पुन: उपयोग नहीं किया जा सकता है। यह उन प्रतिक्रियाओं के लिए उपयुक्त है जो कुकीज़ पर निर्भर करती हैं।
पहले सर्वर से जांच किए बिना कैश्ड संसाधनों का उपयोग बंद करें
Cache-Control: no-cache
क्लाइंट ऐसा व्यवहार करेगा जैसे कि प्रतिक्रिया को कैश नहीं किया गया था। यह उन संसाधनों के लिए उपयुक्त है जो किसी भी समय अप्रत्याशित रूप से बदल सकते हैं, और जिसे उपयोगकर्ताओं को हमेशा नवीनतम संस्करण में देखना होगा।
हर बार उपयोग किए जाने वाले सर्वर से संपर्क करने की आवश्यकता के कारण no-cache
साथ प्रतिक्रियाएं धीमी (उच्च विलंबता) होंगी।
हालाँकि, बैंडविड्थ को बचाने के लिए, ग्राहक अभी भी ऐसी प्रतिक्रियाओं को संग्रहीत कर सकते हैं । no-cache
साथ प्रतिक्रियाओं का उपयोग हर बार सर्वर से संपर्क किए बिना अनुरोधों को संतुष्ट करने के लिए नहीं किया जाएगा ताकि जांच की जा सके कि कैश्ड प्रतिक्रिया का पुन: उपयोग नहीं किया जा सकता है।
अनुरोध प्रतिक्रियाओं को संग्रहीत नहीं किया जाना चाहिए
Cache-control: no-store
ग्राहकों को किसी भी तरह से प्रतिक्रिया को कैश करने और जल्द से जल्द इसे भूलने का निर्देश देता है।
यह निर्देश मूल रूप से संवेदनशील डेटा के लिए डिज़ाइन किया गया था (आज HTTPS का उपयोग इसके बजाय किया जाना चाहिए), लेकिन इसका उपयोग उन प्रतिक्रियाओं के साथ प्रदूषणकारी कैश से बचने के लिए किया जा सकता है जिन्हें पुन: उपयोग नहीं किया जा सकता है।
यह केवल उन विशिष्ट मामलों में उपयुक्त है जहां प्रतिक्रिया डेटा हमेशा अलग होता है, उदाहरण के लिए एक एपीआई एंडपॉइंट जो एक बड़ा यादृच्छिक संख्या देता है। अन्यथा, no-cache
और रिवीलेशन का इस्तेमाल "अनअचीबल" प्रतिक्रिया के व्यवहार के लिए किया जा सकता है, जबकि अभी भी कुछ बैंडविड्थ को बचाने में सक्षम है।
अप्रचलित, निरर्थक और गैर-मानक हेडर
Expires
- वह तिथि निर्दिष्ट करता है जब संसाधन बासी हो जाता है। यह सर्वर और क्लाइंट पर सटीक घड़ियां और टाइम जोन को सही ढंग से सपोर्ट करने पर निर्भर करता है।Cache-control: max-age
अवधिExpires
, और आमतौर पर अधिक विश्वसनीय है।post-check
औरpre-check
निर्देश गैर-मानक इंटरनेट एक्सप्लोरर एक्सटेंशन हैं जो बासी प्रतिक्रियाओं के उपयोग को सक्षम करते हैं। मानक विकल्पstale-while-revalidate
।Pragma: no-cache
- ओब्स्लेटेड इन 1999 । इसके बजायCache-control
का उपयोग किया जाना चाहिए।
कैश्ड संसाधनों को बदलना
URL को बदलने के लिए कैश को बायपास करने का सबसे आसान तरीका है। इसका उपयोग सबसे अच्छा अभ्यास के रूप में किया जाता है जब URL में संस्करण या संसाधन का एक चेकसम होता है, जैसे
http://example.com/image.png?version=1
http://example.com/image.png?version=2
इन दोनों URL को अलग-अलग कैश किया जाएगा, भले ही …?version=1
को हमेशा के लिए कैश किया गया था, एक नई प्रतिलिपि तुरंत ही प्राप्त की जा सकती है …?version=2
।
कृपया कैश को बायपास करने के लिए यादृच्छिक URL का उपयोग न करें। Cache-control: no-cache
उपयोग करें Cache-control: no-cache
या Cache-control: no-store
इसके बजाय Cache-control: no-store
। यदि यादृच्छिक यूआरएल के साथ प्रतिक्रियाएं बिना no-store
निर्देश के बिना भेजी जाती हैं, तो उन्हें अनावश्यक रूप से कैश में संग्रहीत किया जाएगा और कैश से अधिक उपयोगी प्रतिक्रियाओं को बाहर निकाल दिया जाएगा, जिससे पूरे कैश का प्रदर्शन खराब हो जाएगा।