वे थोड़ा अलग हैं - ETag के पास ऐसी कोई जानकारी नहीं है जिसका उपयोग ग्राहक यह निर्धारित करने के लिए कर सकता है कि भविष्य में उस फ़ाइल के लिए फिर से अनुरोध किया जाए या नहीं। यदि ईटाग के पास यह सब है, तो उसे हमेशा एक अनुरोध करना होगा। हालाँकि, जब सर्वर क्लाइंट अनुरोध से ETag पढ़ता है, तो सर्वर तब यह निर्धारित कर सकता है कि क्या फ़ाइल (HTTP 200) भेजना है या ग्राहक को अपनी स्थानीय प्रति (HTTP 304) का उपयोग करने के लिए कहें। एक ETag मूल रूप से एक फ़ाइल के लिए एक चेकसम है जो फ़ाइल की सामग्री में परिवर्तन होने पर शब्दार्थ बदल जाता है।
एक्सपायर हेडर का उपयोग क्लाइंट (और प्रॉक्सी / कैश) द्वारा यह निर्धारित करने के लिए किया जाता है कि सर्वर पर अनुरोध करने की आवश्यकता है या नहीं। आप समाप्ति की तारीख के जितने करीब होंगे, क्लाइंट (या प्रॉक्सी) के सर्वर से उस फ़ाइल के लिए HTTP अनुरोध करने की संभावना उतनी ही अधिक होगी।
तो वास्तव में आप क्या करना चाहते हैं, दोनों हेडर का उपयोग करें - कितनी बार सामग्री में परिवर्तन होता है, इसके आधार पर एक उचित मूल्य पर एक्सपायर हेडर सेट करें। फिर ETags को भेजने के लिए कॉन्फ़िगर करें ताकि जब ग्राहक सर्वर पर अनुरोध भेजें, तो यह अधिक आसानी से निर्धारित कर सकता है कि फाइल वापस भेजना है या नहीं।
ETag के बारे में एक अंतिम नोट - यदि आप अपाचे चलाने वाली कई मशीनों के साथ लोड-संतुलित सर्वर सेटअप का उपयोग कर रहे हैं, तो आप शायद ETAG पीढ़ी को बंद करना चाहेंगे। ऐसा इसलिए है क्योंकि ईटैग हैश एल्गोरिथ्म के हिस्से के रूप में इनोड का उपयोग किया जाता है जो सर्वर के बीच अलग होगा। आप अपाचे को गणना के भाग के रूप में इनोड्स का उपयोग नहीं करने के लिए कॉन्फ़िगर कर सकते हैं लेकिन फिर आप यह सुनिश्चित करना चाहेंगे कि फाइलों पर टाइमस्टैम्प बिल्कुल समान हों, यह सुनिश्चित करने के लिए कि सभी सर्वरों के लिए एक ही ईटाग उत्पन्न हो।