क्या बात है?
पहले से ही एक अच्छी तरह से स्थापित तकनीक है जिसे क्लाइंट-साइड कैशिंग कहा जाता है। एचटीएमएल 5 स्थानीय भंडारण इस मामले में क्या लाता है कि कैशिंग क्या गायब है?
आपके पास कुछ प्रकार के अजीब अनुप्रयोग हो सकते हैं, जिन्हें गतिशील रूप से जावास्क्रिप्ट कोड का हिस्सा लोड करना चाहिए ताकि आप प्रभावी रूप से कैश का उपयोग न कर सकें, लेकिन यह एक अत्यंत दुर्लभ मामला है।
इसके अलावा, एक और बात के बारे में पता होना चाहिए। ब्राउज़रों के पास कैश के लिए विशिष्ट नीतियां हैं, और अधिकांश ब्राउज़र कैश को अच्छी तरह से प्रबंधित करने में काफी अच्छे हैं (केवल पुरानी सामग्री को हटाकर, आदि)। अपने घर-निर्मित कैश को लागू करके, आप ब्राउज़रों को इसे सही तरीके से प्रबंधित करने से रोकते हैं। न केवल इसकी आलोचना की जा सकती है, बल्कि यह आपको जल्द या बाद में नुकसान पहुंचाएगा। उदाहरण: जब किसी वेब एप्लिकेशन के उपयोगकर्ता बग की सूचना दे रहे होते हैं, तो अक्सर आप उनका कैश साफ़ करने के लिए कहकर उत्तर देते हैं। मुझे यकीन नहीं है कि आप अपने मामले में क्या पूछेंगे, क्योंकि कैश साफ़ करने से आपके वेब ऐप के साथ समस्याएँ कभी हल नहीं होंगी।
आपके पहले संपादन के जवाब में (आपका दूसरा संपादन ऑफ-टॉपिक हो रहा है):
मैं ब्राउज़र कैश के बारे में जानकारी रखता हूं, फिर भी कुछ हेडर एक्सेस की जाँच होगी
आपको ब्राउज़र कैशिंग की कुछ समझ की कमी लगती है। इसलिए यह समझना आवश्यक है कि यह कैसे काम करता है पहले, अपने घर-निर्मित कैशिंग तंत्र को लागू करने से पहले । अपने स्वयं के पहिये को तभी पुनर्निर्मित करें जब आप पर्याप्त विद्यमान पहियों को समझते हैं और उनके उपयोग न करने का एक अच्छा कारण है। मेरे प्रश्न के उत्तर के बिंदु 1 को देखें "पहिया को फिर से बंद करना और इसे पछतावा नहीं" ।
HTTP के माध्यम से कुछ डेटा प्रदान करते समय, आप कैश से संबंधित कुछ हेडर निर्दिष्ट कर सकते हैं:
Last-Modified
निर्दिष्ट करता है कि सामग्री कब बदली गई,
Expires
निर्दिष्ट करता है कि सामग्री बदलने पर ब्राउज़र को सर्वर से पूछना चाहिए ।
वे दो हेडर ब्राउज़र को इसकी अनुमति देते हैं:
- सामग्री को बार-बार डाउनलोड करने से बचें। यदि
Last-Modified
अंतिम महीने के लिए सेट किया गया है, और सामग्री कुछ घंटों पहले ही आज डाउनलोड की गई थी, तो इसे फिर से डाउनलोड करने की कोई आवश्यकता नहीं है।
- उस तिथि के लिए क्वेरी करने से बचें जहाँ फ़ाइल को अंतिम बार संशोधित किया गया था। यदि
Expires
एक कैश इकाई के मई 5 वीं , 2014, आप किसी भी GET अनुरोध जारी करने की जरूरत नहीं है न 2011 में, और न ही 2012 या 2013 में, जब से आप जानते हैं कि कैश अप-टू-डेट है।
सीडीएन के लिए दूसरा आवश्यक है। जब Google स्टैक ओवरफ्लो के आगंतुक को JQuery का cdn.sstatic.net
काम करता है या स्टैक ओवरफ्लो द्वारा उपयोग की जाने वाली छवियों या स्टाइलशीट परोसता है, तो वे हर बार नए संस्करण के लिए ब्राउज़र को क्वेरी नहीं करना चाहते हैं। इसके बजाय, वे एक बार उन फ़ाइलों की सेवा कर रहे हैं, जो समाप्ति तिथि को कुछ लंबे समय तक सेट करते हैं, और यह सब है।
उदाहरण के लिए जब मैं स्टैक ओवरफ्लो होम पेज पर आता हूं, तो उसके स्क्रीनशॉट का एक उदाहरण है:
सेवा करने के लिए 15 फाइलें हैं। लेकिन वे सभी 304 Not Modified
प्रतिक्रियाएं कहां हैं ? आपके पास केवल सामग्री के तीन अनुरोध हैं जो बदल गए हैं। अन्य सभी चीज़ों के लिए, ब्राउज़र किसी भी सर्वर से कोई अनुरोध किए बिना कैश किए गए संस्करण का उपयोग करता है ।
निष्कर्ष निकालने के लिए, आपको वास्तव में अपने स्वयं के कैश तंत्र को लागू करने से पहले दो बार सोचने की जरूरत है, और विशेष रूप से एक अच्छा परिदृश्य ढूंढें जहां यह उपयोगी हो सकता है । जैसा कि मैंने अपने उत्तर की शुरुआत में कहा था, मैं केवल एक ही पा सकता हूं: जहां आप जावास्क्रिप्ट का उपयोग कर रहे हैं, उन्हें OMG, के माध्यम से उपयोग करने के लिए eval()
। लेकिन इस मामले में, मुझे पूरा यकीन है कि बेहतर दृष्टिकोण हैं जो या तो हैं:
- मानक कैश तकनीकों का उपयोग करके अधिक प्रभावी, या
- बनाए रखने के लिए आसान है।