RFC 2616 से
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
कोई कैश
यदि नो-कैश निर्देश फ़ील्ड-नाम को निर्दिष्ट नहीं करता है, तो कैश को मूल सर्वर के साथ सफल पुन: सत्यापन के बिना बाद के अनुरोध को संतुष्ट करने के लिए प्रतिक्रिया का उपयोग नहीं करना चाहिए। यह एक मूल सर्वर को कैशे से भी कैशिंग को रोकने की अनुमति देता है जिसे क्लाइंट अनुरोधों के लिए बासी प्रतिक्रियाओं को वापस करने के लिए कॉन्फ़िगर किया गया है।
इसलिए यह एजेंटों को सभी प्रतिक्रियाओं को अमान्य करने का निर्देश देता है ।
इसकी तुलना में
आवश्यक पुनः सत्यापित
जब किसी कैश द्वारा प्राप्त प्रतिसाद में पुनर्जीवित निर्देश मौजूद होना चाहिए, तो कैश उस प्रविष्टि का उपयोग नहीं करता है जब वह मूल सर्वर के साथ इसे फिर से अमान्य किए बिना बाद के अनुरोध का जवाब देने के लिए बासी हो जाता है।
तो यह एजेंटों को पुनर्जीवित बासी प्रतिक्रियाओं को निर्देशित करता है ।
विशेष रूप से no-cache
, इस संबंध में उपयोगकर्ता एजेंट वास्तव में इस निर्देश के साथ कैसा व्यवहार करते हैं?
no-cache
अगर वहाँ must-revalidate
और क्या बात है max-age
?
देखें यह टिप्पणी:
http://palpapers.plynt.com/issues/2008Jul/cache-control-attributes/
कोई कैश
हालांकि यह निर्देश जैसा लगता है कि यह ब्राउज़र को पृष्ठ को कैश नहीं करने का निर्देश दे रहा है, एक सूक्ष्म अंतर है। RFC के अनुसार, "नो-कैश" निर्देश, ब्राउज़र को बताता है कि उसे कैश से पेज को परोसने से पहले सर्वर से रिवाइज करना चाहिए। रिवैलिडेशन एक साफ-सुथरी तकनीक है जो एप्लिकेशन को बैंड-चौड़ाई का संरक्षण करने देती है। यदि पृष्ठ जिस ब्राउज़र पर कैश किया गया है वह नहीं बदला है, तो सर्वर ब्राउज़र को केवल संकेत देता है और पृष्ठ कैश से प्रदर्शित होता है। इसलिए, ब्राउज़र (सिद्धांत में, कम से कम), पृष्ठ को अपने कैश में संग्रहीत करता है, लेकिन सर्वर के साथ पुन: अमान्य होने के बाद ही इसे प्रदर्शित करता है। व्यवहार में, IE और फ़ायरफ़ॉक्स ने नो-कैश निर्देश का इलाज करना शुरू कर दिया है जैसे कि यह ब्राउज़र को पृष्ठ को कैश नहीं करने का निर्देश देता है। हमने लगभग एक साल पहले इस व्यवहार को देखना शुरू किया।
क्या किसी को इस पर अधिक आधिकारिक कुछ भी मिला है?
अपडेट करें
पुनर्निर्देशित निर्देश को सर्वर द्वारा उपयोग किया जाना चाहिए, यदि और केवल यदि प्रतिनिधित्व पर एक अनुरोध को मान्य करने में विफलता के परिणामस्वरूप गलत संचालन हो सकता है, जैसे कि चुपचाप अप्रकाशित वित्तीय लेनदेन।
यह कुछ ऐसा है जिसे मैंने अब तक दिल पर नहीं लिया है। RFC कह रहा है कि हल्के-से-अमान्य का उपयोग न करें। बात यह है कि, वेब सेवाओं के साथ, आपको एक नकारात्मक दृष्टिकोण अपनाना होगा और अपने अज्ञात ग्राहक ऐप्स के लिए सबसे बुरा मानना होगा। किसी भी बासी संसाधन में समस्या पैदा करने की क्षमता होती है।
और कुछ और जो मैंने अभी माना है, लास्ट-मॉडिफाइड या ETags के बिना, ब्राउज़र केवल पूरे संसाधन को फिर से ला सकता है। हालांकि ईटैग्स के साथ, मैंने देखा है कि क्रोम कम से कम हर अनुरोध पर पुन: अमान्य लगता है। जो इन दोनों निर्देशों को गलत बनाता है या कम से कम खराब नाम रखता है क्योंकि वे तब तक ठीक से अमान्य नहीं कर सकते हैं जब तक कि अनुरोध में अन्य हेडर शामिल नहीं होते हैं जो तब भी 'हमेशा अमान्य' होते हैं।
मैं केवल उस अंतिम बिंदु को स्पष्ट करना चाहता हूं। बस सेटिंग करके must-revalidate
लेकिन या तो ईटैग या लास्ट-मोडिफाइड को शामिल नहीं किया जाता है, एजेंट केवल सामग्री फिर से प्राप्त कर सकता है क्योंकि इसमें सर्वर को तुलना करने के लिए भेजने के लिए कुछ भी नहीं है।
हालांकि, मेरे अनुभवजन्य परीक्षण से पता चला है कि जब ETag या संशोधित हेडर डेटा प्रतिक्रियाओं में शामिल होते हैं, तो एजेंट must-revalidate
हेडर की उपस्थिति की परवाह किए बिना, वैसे भी हमेशा अमान्य होते हैं ।
तो इसका मतलब must-revalidate
यह है कि जब यह बासी हो जाता है, तो 'बाईपास कैश' के लिए बाध्य करना, जो केवल तब हो सकता है जब आपने जीवनकाल / आयु must-revalidate
निर्धारित की हो , इस प्रकार यदि कोई आयु या अन्य हेडर के साथ प्रतिक्रिया पर सेट किया जाता है, तो यह प्रभावी रूप से no-cache
तब से इसके बराबर हो जाता है प्रतिक्रिया को तुरंत बासी माना जाएगा।
- तो मैं अंत में गिल्ली के जवाब को चिह्नित करने जा रहा हूं!