cache-controlहैडर एक कैशिंग प्रॉक्सी एक प्रतिक्रिया की "ताजगी" बताने के लिए एक HTTP सर्वर के लिए प्राथमिक तंत्र है। (यानी, कैश में प्रतिक्रिया को स्टोर करने के लिए कैसे / कब तक)
कुछ स्थितियों में, cache-controlनिर्देश अपर्याप्त हैं। HTTP वर्किंग ग्रुप की एक चर्चा को यहां एक पृष्ठ के रूप में संग्रहीत किया गया है, जो केवल भाषा के साथ बदलता है। यह अलग-अलग हेडर के लिए सही उपयोग का मामला नहीं है, लेकिन हमारी चर्चा के लिए संदर्भ मूल्यवान है। (हालांकि मेरा मानना है कि वैरी हेडर उस मामले में समस्या को हल करेगा, एक बेहतर तरीका है।) उस पेज से:
Vary उन मामलों के लिए सख्ती से है जहां यह सर्वर को क्या करना है को दोहराने के लिए एक प्रॉक्सी के लिए निराशाजनक या अत्यधिक जटिल है।
एक आकस्मिक उदाहरण:
आपके HTTP सर्वर का एक बड़ा लैंडिंग पृष्ठ है। आपके पास एक ही URL के साथ दो अलग-अलग पृष्ठ हैं, जो इस बात पर निर्भर करता है कि उपयोगकर्ता पहले भी रहा है। आप कुकीज़ के आधार पर अनुरोधों और उपयोगकर्ता की "विज़िट काउंट" के बीच अंतर करते हैं। लेकिन - चूँकि आपके सर्वर का लैंडिंग पृष्ठ इतना बड़ा है, आप चाहते हैं कि यदि संभव हो तो प्रतिक्रिया को कैश करने के लिए मध्यस्थ प्रॉक्सी करें।
कैशिंग प्रॉक्सी को यह जानकारी देने के लिए URL, अंतिम-संशोधित और कैश-कंट्रोल हेडर अपर्याप्त हैं, लेकिन यदि आप जोड़ते हैं Vary: Cookie, तो कैश इंजन अपने कैशिंग निर्णयों में कुकी शीर्षलेख जोड़ देगा।
अंत में, छोटे ट्रैफ़िक के लिए, डायनेमिक वेब साइट्स - मैंने हमेशा सरल Cache-Control: no-cache, no-storeऔर Pragma: no-cacheपर्याप्त पाया है ।
संपादित करें - अपने प्रश्न का अधिक सटीक उत्तर देने के लिए: HTTP अनुरोध शीर्ष लेख 'स्वीकार' सामग्री-प्रकारों को परिभाषित कर सकता है जिसे ग्राहक संसाधित कर सकता है। यदि आपके पास एक ही URL पर एक ही सामग्री की दो प्रतियां हैं, केवल सामग्री-प्रकार में भिन्न है, तो उपयोग Vary: Acceptकरना उचित हो सकता है।
अपडेट 11 सितंबर 12:
मैं उन दो कड़ियों में शामिल हूं, जो टिप्पणियों में दिखाई दिए हैं क्योंकि यह टिप्पणी मूल रूप से पोस्ट की गई थी। वे वास्तविक दुनिया के उदाहरणों (और समस्याओं) के लिए दोनों उत्कृष्ट संसाधन हैं वैरी के साथ: स्वीकार करें; आईआईएफ आप इस जवाब को पढ़ रहे हैं आपको उन लिंक को भी पढ़ना होगा।
एरिकला, बकाया एरिकला से, वैरी हेडर के साथ इंटरनेट एक्सप्लोरर के व्यवहार पर और डेवलपर्स के सामने प्रस्तुत कुछ चुनौतियां: आईई में वैरी हैडर प्रिवेंट कैशिंग । संक्षेप में, IE (पूर्व IE9) वैरी हेडर का उपयोग करने वाली किसी भी सामग्री को कैश नहीं करता है क्योंकि अनुरोध कैश में HTTP अनुरोध हेडर शामिल नहीं है। एरिकला (वास्तविक दुनिया में एरिक लॉरेंस) IE टीम में एक प्रोग्राम मैनेजर है।
दूसरा एरन मेदान से है, और क्रोम में वैरी-संबंधी अप्रत्याशित व्यवहार की एक ऑन-गोइंग चर्चा है: बैकिंग वैरी हेडर को सही ढंग से संभाल नहीं करता है । यह IE के व्यवहार से संबंधित है, सिवाय इसके कि क्रोम देवों ने एक अलग दृष्टिकोण लिया - हालांकि ऐसा प्रतीत नहीं होता है कि यह एक जानबूझकर विकल्प था।