वे थोड़ा अलग हैं - ईटीएजी में ऐसी कोई जानकारी नहीं है जो ग्राहक यह निर्धारित करने के लिए उपयोग कर सके कि भविष्य में फिर से उस फ़ाइल के लिए अनुरोध करना है या नहीं। अगर ईटीएजी के पास यह सब कुछ है, तो उसे हमेशा एक अनुरोध करना होगा। हालांकि, जब सर्वर क्लाइंट अनुरोध से ईटीएग पढ़ता है, तो सर्वर तब निर्धारित कर सकता है कि फ़ाइल (HTTP 200) भेजना है या क्लाइंट को अपनी स्थानीय प्रतिलिपि (HTTP 304) का उपयोग करने के लिए कहें। एक ईटाग मूल रूप से एक फ़ाइल के लिए एक चेकसम है जो फ़ाइल की सामग्री बदलते समय अर्थपूर्ण रूप से बदलता है।
क्लाइंट (और प्रॉक्सी/कैश) द्वारा एक्सपियर हेडर का उपयोग यह निर्धारित करने के लिए किया जाता है कि सर्वर को भी अनुरोध करने की आवश्यकता है या नहीं। आप समाप्ति तिथि के करीब जितना अधिक हो, उतना ही अधिक क्लाइंट (या प्रॉक्सी) सर्वर से उस फ़ाइल के लिए HTTP अनुरोध करेगा।
तो वास्तव में आप जो करना चाहते हैं वह दोनों शीर्षकों का उपयोग करना है - सामग्री को कितनी बार बदलता है, इस पर आधारित उचित मूल्य पर एक्सपियर हेडर सेट करें। फिर ईटैग को भेजने के लिए कॉन्फ़िगर करें ताकि जब ग्राहक सर्वर से अनुरोध भेजते हैं, तो यह फ़ाइल को वापस भेजने के लिए या नहीं आसानी से निर्धारित कर सकता है।
ईटाग के बारे में एक आखिरी नोट - यदि आप अपाचे चलाने वाली कई मशीनों के साथ लोड-संतुलित सर्वर सेटअप का उपयोग कर रहे हैं तो आप शायद ईटाग पीढ़ी को बंद करना चाहते हैं। ऐसा इसलिए है क्योंकि इटैग हैश एल्गोरिदम के हिस्से के रूप में इनोड का उपयोग किया जाता है जो सर्वर के बीच अलग होगा। आप गणना के हिस्से के रूप में इनॉड्स का उपयोग न करने के लिए अपाचे को कॉन्फ़िगर कर सकते हैं लेकिन फिर आप यह सुनिश्चित करना चाहते हैं कि फ़ाइलों पर टाइमस्टैम्प बिल्कुल समान हैं, यह सुनिश्चित करने के लिए कि सभी ईटीएजी सभी सर्वरों के लिए जेनरेट हो जाएं।
स्रोत
2009-02-01 03:18:16
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching (सामान्य में अच्छा) –