एक्सपायर्स और कैश-कंट्रोल हेडर के बीच क्या अंतर है?


जवाबों:


130

Cache-ControlHTTP / 1.1 में पेश किया गया था और की तुलना में अधिक विकल्प प्रदान करता है Expires। उनका उपयोग एक ही चीज़ को पूरा करने के लिए किया जा सकता है, लेकिन इसके लिए डेटा मान Expiresएक HTTP दिनांक है, जबकि Cache-Controlअधिकतम-आयु आपको एक सापेक्ष राशि निर्दिष्ट करने देती है ताकि आप "पृष्ठ के अनुरोध के बाद X घंटे" निर्दिष्ट कर सकें।

HTML कैश नियंत्रण एक बहुत ही समान प्रश्न है और इसमें एक कैशिंग ट्यूटोरियल का एक अच्छा लिंक है जो आपके अधिकांश प्रश्नों (जैसे, http://www.mnot.net/cache_docs/#EXPIRES ) का उत्तर देना चाहिए । हालांकि, योग Expiresजैसे स्थिर संसाधनों के लिए सिफारिश की जाती है और Cache-Controlजब आपको कैशिंग किया जाता है तो आपको अधिक नियंत्रण की आवश्यकता होती है।


8
यह टिप्पणी करने योग्य है कि कैश-कंट्रोल वह है जो सभी ब्राउज़र उपयोग करेंगे, लेकिन यह दोनों हेडर को निर्दिष्ट करने के लिए उपयोगी है, अगर रास्ते में पुराने परदे के पीछे हैं।
नाचो कोलोमा

3
कैशिंग हेडर के सही उपयोग के लिए जाँच करने के लिए सर्विस नोटबॉटम ( मार्क नॉटिंघम द्वारा , जिसने ऊपर दिए गए उत्तर में संदर्भित कैशिंग लेख लिखा है) का भी उपयोग करें।
डेक्सिम

35
इसके अलावा: "जब कैश-नियंत्रण और समाप्ति दोनों मौजूद हैं, तो कैश-नियंत्रण पूर्वता लेता है।" - mnot.net/cache_docs/
KFunk

35

यदि आप CDN (क्लाउड डिलीवरी नेटवर्क) का उपयोग कर रहे हैं, तो मैं सेकंड में अधिकतम आयु के साथ कैश-कंट्रोल का उपयोग करने की सलाह देता हूं। उदाहरण के लिए कैश-कंट्रोल: अधिकतम आयु = 604800। यह आपके मूल सर्वर के लिए अनुरोध-चोटियों को रोकता है: "एक्सपायर्स बुध, 30 अक्टूबर 20xx 04:37:07 GMT" के साथ सभी ब्राउज़र आपसे एक ही समय में अनुरोध करेंगे।


22
अपाचे (और शायद कई सर्वर) आमतौर पर उस समय का उपयोग करके समाप्ति तिथि निर्धारित करते हैं जिस समय फ़ाइल का अनुरोध किया गया था + आपके द्वारा निर्दिष्ट टाइमआउट। जैसे-जैसे यह तिथि सेकंड का उपयोग कर रही है, आपका परिदृश्य बहुत ही असंभावित है और व्यवहार वैसा ही है cache-control। इसलिए मैं यह नहीं देखता कि प्रयोग करने पर चोटियों का अनुरोध क्यों किया जाएगाExpires:
15 '12

19

इस Google डेवलपर्स लेख के अनुसार, HTTP कैशिंग :

कैश-कंट्रोल हेडर को HTTP / 1.1 विनिर्देशन के भाग के रूप में परिभाषित किया गया था और प्रतिक्रिया कैशिंग नीतियों को परिभाषित करने के लिए उपयोग किए जाने वाले पिछले हेडर (जैसे एक्सपायर) का उपयोग करता है। सभी आधुनिक ब्राउज़र कैश-कंट्रोल का समर्थन करते हैं, इसलिए हमें इसकी आवश्यकता होगी।


न केवल सभी आधुनिक ब्राउज़र इसका समर्थन करते हैं - उन्हें भी करना चाहिए, जैसा कि यह कल्पना में है: "यदि एक प्रतिक्रिया में एक एक्सपायर हेडर और एक अधिकतम-आयु निर्देश शामिल हैं, तो अधिकतम-आयु निर्देश एक्सपायर्स हेडर को ओवरराइड करता है, भले ही एक्सपायर हेडर अधिक प्रतिबंधात्मक है "[ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk

8

कैश-कंट्रोल HTTP / 1.1 में परिभाषित किया गया था, सर्वर से क्लाइंट तक सभी कैशिंग तंत्रों को बताता है कि क्या वे इस ऑब्जेक्ट को कैश कर सकते हैं। इसे सेकंड में मापा जाता है:Cache-Control: max-age=3600 :।

Expiresहेडर फ़ील्ड दिनांक / समय जिसके बाद प्रतिक्रिया बासी माना जाता है देता है। एक्सपायर वैल्यू HTTP-डेट टाइमस्टैम्प है:Expires: Tue, 18 Jul 2017 16:07:23 GMT :।

यदि प्रतिक्रिया में निर्देश के Cache-Controlसाथ एक फ़ील्ड शामिल है max-age, तो एक प्राप्तकर्ता को Expiresफ़ील्ड को अनदेखा करना चाहिए ।


4

इस विषय पर हरोकू भक्त का एक उत्कृष्ट लेख है

इससे उद्धृत,

जबकि कैश-कंट्रोल हेडर क्लाइंट-साइड कैशिंग को चालू करता है और संसाधन की अधिकतम आयु निर्धारित करता है, समय सीमा समाप्त करने के लिए एक्सपायर हेडर का उपयोग किया जाता है ताकि संसाधन अब मान्य न हो।


0

सीसी के निजी / सार्वजनिक विकल्पों को छोड़कर, मैं कोई अंतर नहीं देख सकता। एक्सपायर्स जैसे "एक्सेस प्लस 1 वर्ष / माह / सप्ताह / दिन" का उपयोग करते समय, यह ठीक उसी तरह से काम करता है जैसे कि सीसी करता है।


आप downvote समझाने की परवाह करेंगे? मैंने क्रोम, सफारी और फ़ायरफ़ॉक्स में कुछ व्यापक परीक्षण किया। Cache Control में कुछ विकल्प हैं जो समय सीमा समाप्त होने पर उपयोग में नहीं आते हैं, लेकिन सभी व्यावहारिक उद्देश्यों के लिए, दोनों बिल्कुल उसी तरह से काम करते हैं।
रॉब

-1

यदि आप अभी भी रुचि रखते हैं, तो मैं इस सिफारिश को सीधे Google के लड़कों से छोड़ देता हूं। https://developers.google.com/speed/docs/insights/LeverageBrowserCaching वे कैश-कंट्रोल से पहले समय सीमा समाप्त करना पसंद करते हैं


क्या आप सुनिश्चित हैं कि वे Cache-Control पर समय सीमा समाप्त करना पसंद करते हैं? मैंने पढ़ा है कि ओवरराइड चारों ओर से कम से कम फ़ायरफ़ॉक्स के लिए है। developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00

वर्तमान में, उस पृष्ठ में "डिप्रेस्ड" का उल्लेख है। यह पेज पेजस्पीड इनसाइट्स एपीआई के संस्करण 4 के लिए लिखा गया था, जो कि पदावनत है और मई 2019 में बंद हो जाएगा। संस्करण 5 नवीनतम है और क्रोम उपयोगकर्ता अनुभव से वास्तविक दुनिया का डेटा प्रदान करता है। लाइटहाउस से रिपोर्ट और लैब डेटा। ”
जोकेम शुल्नेक्लोपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.