2012-10-16 12 views
110

जब मैं chesseng.herokuapp.com जाएँ मैं एक प्रतिक्रिया हेडर किकैश-कंट्रोल क्या है: निजी?

Cache-Control:private 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:text/css 
Date:Tue, 16 Oct 2012 06:37:53 GMT 
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT 
Status:200 OK 
transfer-encoding:chunked 
Vary:Accept-Encoding 
X-Rack-Cache:miss 

तरह लग रहा है और फिर मैं पृष्ठ ताज़ा करें और मिल

Cache-Control:private 
Connection:keep-alive 
Date:Tue, 16 Oct 2012 06:20:49 GMT 
Status:304 Not Modified 
X-Rack-Cache:miss 

तो यह कैशिंग की तरह लगता है काम कर रहा है। यदि यह कैशिंग के लिए काम करता है तो का समय और कैश-कंट्रोल: अधिकतम आयु का समय क्या है। भ्रम में जोड़ने के लिए, जब मैं https://developers.google.com/speed/pagespeed/insights/ पर पृष्ठ का परीक्षण करता हूं तो यह मुझे "लीवरेज ब्राउज़र कैशिंग" कहता है।

उत्तर

143
Cache-Control: private 

इंगित करता है कि सभी या प्रतिक्रिया संदेश का एक भाग एक एकल उपयोगकर्ता के लिए लक्षित है और नहीं इस तरह के एक प्रॉक्सी सर्वर के रूप में, एक साझा कैश द्वारा कैश किया जाना चाहिए।

RFC2616 section 14.9.1

+1

तो क्या आप समझा सकते हैं कि रीफ्रेश के बाद प्रतिक्रिया क्यों स्थिति है: 304 संशोधित नहीं – user782220

+11

क्योंकि यह आपके ब्राउज़र द्वारा कैश किया गया था। आप एकमात्र उपयोगकर्ता हैं जिनके लिए प्रतिक्रिया का इरादा था। –

+1

इसलिए प्रत्येक एकल उपयोगकर्ता को प्रभावी रूप से समाप्त होने या कैश-कंट्रोल के रूप में कैश नहीं किया जाता है: अधिकतम आयु। – user782220

14

RFC 2616 से, section 14.9.1:

इंगित करता है कि सभी या प्रतिक्रिया संदेश का एक भाग एक एकल उपयोगकर्ता के लिए लक्षित है और नहीं एक साझा कैश द्वारा कैश किया जाना चाहिए ... एक निजी (गैर-साझा) कैश प्रतिक्रिया कैश कर सकता है।


ब्राउज़र इस जानकारी का उपयोग कर सकता है। बेशक, वर्तमान "उपयोगकर्ता" का अर्थ कई चीजें हो सकता है: ओएस उपयोगकर्ता, एक ब्राउज़र उपयोगकर्ता (जैसे क्रोम प्रोफाइल), आदि यह निर्दिष्ट नहीं है।

मेरे लिए, का एक और ठोस उदाहरण है कि प्रॉक्सी सर्वर (जो आमतौर पर कई उपयोगकर्ता हैं) इसे कैश नहीं करेंगे। यह अंतिम उपयोगकर्ता के लिए है, और कोई और नहीं।


एफवाईआई, आरएफसी स्पष्ट करता है कि यह सुरक्षा प्रदान नहीं करता है। यह सामग्री को सुरक्षित नहीं करने, सही सामग्री दिखाने के बारे में है।

निजी शब्द का यह उपयोग केवल उस नियंत्रण को नियंत्रित करता है जहां प्रतिक्रिया कैश की जा सकती है, और संदेश सामग्री की गोपनीयता सुनिश्चित नहीं कर सकता है।

+5

** एक निजी (गैर-साझा) कैश प्रतिक्रिया कैश कर सकता है। ** यह हिस्सा महत्वपूर्ण है। धन्यवाद। – Oliver

0

समय-सीमा समाप्त इकाई हेडर फ़ील्ड दिनांक/समय जिसके बाद प्रतिक्रिया stale.The कैश-नियंत्रण माना जाता है देता है: maxage क्षेत्र आयु मूल्य देता है (सेकंड में) बड़ा जो से प्रतिक्रिया बासी मानते हैं।

हेडर फ़ील्ड के ऊपर अल्थॉट क्लाइंट को यह निर्णय लेने के लिए एक तंत्र प्रदान करता है कि सर्वर से अनुरोध भेजना है या नहीं। कुछ स्थितियों में, ग्राहक अलग होने का अनुरोध भेजता है और प्रतिक्रिया का आयु मान बड़ा होता है तो अधिकतम मूल्य, खुराक का मतलब है कि सर्वर को क्लाइंट को संसाधन भेजने की आवश्यकता है? शायद संसाधन कभी नहीं बदला।

इस समस्या को हल करने के लिए, HTTP1.1 अंतिम-संशोधित सिर देता है। सर्वर क्लाइंट को प्रतिक्रिया की अंतिम संशोधित तारीख देता है। जब ग्राहक को इस संसाधन की आवश्यकता होती है, तो यह सर्वर पर हेड फ़ील्ड के बाद से संशोधित-भेज देगा। यदि यह तिथि resouce की संशोधित तिथि से पहले है, तो सर्वर संसाधन को क्लाइंट को भेज देगा और 200 कोड देगा।अन्यथा, यह क्लाइंट को 304 कोड देगा और इसका मतलब है कि ग्राहक इसे कैश किए गए संसाधन का उपयोग कर सकता है।

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