पाठ 21 / 24
ETag से कैशिंग
क्लाइंट को ऐसा डेटा दोबारा डाउनलोड करने से बचाना जो बदला नहीं है।
Cache-Control नियम तय करता है
Cache-Control: max-age=60 क्लाइंट और प्रॉक्सी को बताता है कि रिस्पॉन्स 60 सेकंड तक ताज़ा है — उस विंडो में कोई रिक्वेस्ट ज़रूरी नहीं। no-store कहता है इसे कभी कैश न करें (संवेदनशील डेटा)।
रिवैलिडेशन के लिए ETag
एक ETag वर्तमान प्रतिनिधित्व की एक फ़िंगरप्रिंट है। क्लाइंट इसे If-None-Match के रूप में वापस भेजता है; यदि अपरिवर्तित हो तो सर्वर बिना बॉडी के 304 Not Modified जवाब देता है — बैंडविड्थ बचाते हुए ताज़गी की पुष्टि करता है।
रिवैलिडेशन राउंड-ट्रिप
क्लाइंट हमेशा रिक्वेस्ट भेजता है, पर मैच होने पर बॉडी वायर पर नहीं जाती।
GET /orders/482 HTTP/1.1
If-None-Match: "a1b2c3"
HTTP/1.1 304 Not Modified
ETag: "a1b2c3"त्वरित जाँच: एक क्लाइंट `If-None-Match` में ऐसा ETag भेजता है जो अभी भी मौजूदा रिसोर्स से मेल खाता है। सर्वर को क्या लौटाना चाहिए?
- पूरी बॉडी के साथ 200 OK
- बिना बॉडी के 304 Not Modified
- 404 Not Found
Answer
बिना बॉडी के 304 Not Modified — मेल खाता ETag बताता है कि क्लाइंट की कैश्ड कॉपी अभी भी मान्य है, इसलिए सर्वर 304 से ताज़गी की पुष्टि करता है और बॉडी दोबारा भेजना छोड़ देता है।