2011-09-27 16 views
13

मुझे Cache-Control:no-store और Cache-Control:no-cache के बीच व्यावहारिक अंतर नहीं मिलता है।कैश-कंट्रोल में नो-कैश और नो-स्टोर के बीच क्या अंतर है?

जहाँ तक मुझे पता है, no-store का अर्थ है कि उस प्रतिक्रिया को कैश करने के लिए कोई कैश डिवाइस अनुमति नहीं है। दूसरी तरफ, no-cache का अर्थ है कि बिना किसी कैश डिवाइस को स्रोत के साथ पहले सत्यापित किए बिना कैश किए गए प्रतिक्रिया की अनुमति देने की अनुमति है। लेकिन इसके बारे में क्या मान्यता है? सशर्त मिलता है?

यदि प्रतिक्रिया no-cache है, लेकिन इसमें Last-Modified या ETag है?

सम्मान।

उत्तर

12

लेकिन यह जांच क्या है?

सटीक रूप से Last-Modified या ETag की जांच कर रहा है। क्लाइंट सर्वर से पूछेगा कि क्या उसके पास हेडर का उपयोग करके डेटा का नया संस्करण है और यदि उत्तर नहीं है तो यह कैश डेटा की सेवा करेगा।


अद्यतन

से RFC

no-cache 
    If the no-cache directive does not specify a field-name, then a cache MUST NOT use 
the response to satisfy a subsequent request without successful revalidation with the 
origin server. This allows an origin server to prevent caching even by caches that 
have been configured to return stale responses to client requests. 
+0

और यदि कैश किए गए प्रतिक्रिया में 'अंतिम-संशोधित' नहीं है और न ही 'ईटाग' है? – vtortola

+0

मुझे लगता है कि इस मामले में प्रतिक्रिया बिल्कुल कैश नहीं की जाएगी। –

+0

इस तरह मैं आरएफसी की व्याख्या करता हूं। (जोड़ा स्निपेट) –

2

आप पहचान के रूप में, कोई -कैच का मतलब यह नहीं है कि कभी कैशिंग नहीं होती है, बल्कि उपयोगकर्ता एजेंट को सर्वर से हमेशा पूछना पड़ता है कि क्या यह कैश किए जाने के लिए ठीक है। इसके विपरीत, नो-स्टोर कहता है कि एक प्रति भी नहीं रखता है, जिसका मतलब है कि इसके बारे में पूछने के लिए कुछ भी नहीं है। अगर आपको इसका जवाब मिल जाए तो "क्या मैं इसका पुन: उपयोग कर सकता हूं?" हमेशा नहीं होता है, आपको (1) पूछने के ऊपरी हिस्से को छोड़कर एक प्रदर्शन बढ़ावा मिलता है और (2) नए संभवतः पुन: उपयोग किए जाने वाले परिणाम के लिए जगह बनाने के लिए कुछ संभवतः पुन: प्रयोज्य संग्रहीत परिणाम को झटके नहीं देते हैं।

प्रदर्शन के अलावा, ब्राउज़र इतिहास के साथ एक व्यवहार अंतर है। HTTP 1.1 spec सेक्शन 13.13 कहता है कि "समाप्ति समय इतिहास तंत्र पर लागू नहीं होता है।" नो-कैश हेडर समाप्ति का वर्णन करता है, और इसलिए बैक बटन जैसे इतिहास तंत्र पर लागू नहीं होता है। इस प्रकार, उपयोगकर्ता पिछड़े पृष्ठ पर पिछड़ा नेविगेट कर सकता है जिसमें सर्वर से संपर्क किए बिना नो-कैश होता है।

दूसरी ओर, नो-स्टोर हेडर, डेटा को सत्र के बाहर संग्रहीत करने से रोकता है, इस स्थिति में यह उपयोग करने के लिए इतिहास तंत्र के लिए उपलब्ध नहीं है। नो-स्टोर के साथ, यदि उपयोगकर्ता किसी अन्य डोमेन पर नेविगेट करके अपना सत्र समाप्त करता है और फिर वापस जाता है, ब्राउज़र के लिए यह जानने का एकमात्र तरीका यह है कि सर्वर से प्रारंभिक पृष्ठ फिर से प्राप्त करना है।

कोई कैश मतलब यह नहीं है "इस कैश नहीं है" (है कि कोई-स्टोर होगा):

यहाँ कैसे इस विषय पर एक Chromium issue भेद बनाता है। नो-कैश का मतलब सामान्य लोड के लिए इसका उपयोग नहीं करता है जब तक कि संसाधन ताजगी के लिए पुन: सत्यापित नहीं किया जाता है। इतिहास नेविगेशन सामान्य भार नहीं हैं।

संबंधित मुद्दे