2011-03-16 11 views
25

मैं अपाचे पर PHP चला रहा हूं, और साइट लोड को तेज़ी से लोड करने के लिए सर्वर-साइड कैशिंग को कार्यान्वित करने के बारे में उलझन में हूं।कौन सा उपयोग करने के लिए: एक्सपियर हैडर, अंतिम संशोधित शीर्षलेख या ईटीएजी

Expires, Last-Modified और ETag हेडर के बीच क्या अंतर है, और किस स्थिति में किसका उपयोग किया जाना चाहिए?

उत्तर

19

आप संयोजन के साथ Expires शीर्षलेख का उपयोग कर सकते हैं लेकिन अन्य दो के बावजूद। यह सार्वभौमिक रूप से प्रॉक्सी और ब्राउज़र कैश द्वारा समर्थित है।

ETag और Last-Modified टिकटों के बीच का अंतर अधिक अर्थपूर्ण है। ईटीएजी ग्राहकों के लिए अपारदर्शी हैं। यह आमतौर पर एक चेकसम है। जबकि क्लाइंट द्वारा अंतिम-संशोधित शीर्षलेख का अर्थ लिया जा सकता है। यह समझा जाता है कि आखिरी संशोधित टाइमस्टैम्प रैखिक रूप से काम करता है।

यदि कोई ब्राउज़र If-Unmodified-Since के साथ संसाधन का अनुरोध करता है, तो अतीत में टाइमस्टैम्प की एक विस्तृत श्रृंखला ऐसी स्थिति से मेल खा सकती है। यदि आपके पृष्ठ अक्सर बदलते हैं तो अंतिम-संशोधित टाइमस्टैम्प लाभकारी हो सकता है।

दूसरी ओर, ईटाग दृष्टिकोण, उन ग्राहकों को जाता है जो प्रति संसाधन एक अंतिम फिंगरप्रिंट को बचाते हैं। (मुझे यकीन नहीं है कि ब्राउज़र कैश एकाधिक ईटैग याद करते हैं)। अनुरोध पर, केवल एक या कुछ संभव If-None-Match टोकन सूचीबद्ध हैं। इसका मतलब अधिक याद आ सकता है। इसके अलावा, आपको एकाधिक चेकसम की तुलना करना होगा, जबकि अंतिम-संशोधित टाइमस्टैम्प के साथ आपको अंकगणितीय तुलना हो सकती है।

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

यह भी देखें:

+0

इसलिए मूल रूप से हमें eTags पर mod_expire का उपयोग करना चाहिए? – Avinash

+0

ज्यादातर मामलों में: हाँ। – mario

+0

तब जब हमें अंतिम संशोधित शीर्षलेख का उपयोग करना चाहिए? – Avinash

29

Expires और Cache-Control हैं "मजबूत कैशिंग हेडर"

Last-Modified और ETag हैं "कमजोर कैशिंग हेडर"

पहले ब्राउज़र यह निर्धारित करने के लिए कि सर्वर को अनुरोध करना है या नहीं, Expires/Cache-Control जांचता है।

अगर इसे अनुरोध करना है, तो यह HTTP अनुरोध में Last-Modified/ETag भेज देगा। यदि दस्तावेज़ के Etag मान मेल खाते हैं, तो सर्वर 200 के बजाय 304 कोड भेज देगा, और कोई सामग्री नहीं। ब्राउज़र सामग्री को अपने कैश से लोड करेगा।

मैं कमजोर कैशिंग हेडर में से एक के साथ मजबूत कैशिंग हेडर का उपयोग करने की सलाह देता हूं।

+0

क्या आपको कोई दस्तावेज़ "मजबूत और कमजोर" कैशिंग व्यवहार का समर्थन करता है? मुझे एक नहीं मिला, और मेरा क्लाइंट ब्राउज़र अब अंतिम रूप से समाप्त होने पर अंतिम-संशोधित प्राथमिकता को प्राथमिकता देता है, जिसे मैं समझ नहीं पा रहा हूं। – GMsoF

+0

कमजोर और मजबूत वैधकर्ताओं का वर्णन [आरएफसी 2616] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.3) खंड 13.3.3 – user2418306

+1

आरएफसी 2616 कहता है "इकाई टैग सामान्य रूप से होते हैं "मजबूत वैधकर्ता", लेकिन प्रोटोकॉल एक इकाई टैग को "कमजोर" के रूप में टैग करने के लिए एक तंत्र प्रदान करता है। – cquezel

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