सर्विस वर्कर कैश और एचटीटीपी कैश लेयर में, एक जैसा या अलग-अलग समयसीमा का लॉजिक इस्तेमाल करने के फ़ायदे और नुकसान.
सर्विस वर्कर और पीडब्ल्यूए, आधुनिक वेब ऐप्लिकेशन के स्टैंडर्ड बन रहे हैं. हालांकि, रिसॉर्स को कैश मेमोरी में सेव करना पहले से ज़्यादा जटिल हो गया है. इस लेख में ब्राउज़र कैशिंग, शामिल हैं:
- सर्विस वर्कर कैश मेमोरी और एचटीटीपी कैश मेमोरी के इस्तेमाल के उदाहरण और इनके बीच अंतर.
- सामान्य की तुलना में अलग-अलग सर्विस वर्कर को कैश मेमोरी में सेव करने की सुविधा के फ़ायदे और नुकसान एचटीटीपी कैश मेमोरी में सेव करने की रणनीतियां.
कैश मेमोरी में सेव होने वाले फ़्लो की खास जानकारी
हाई-लेवल पर, जब ब्राउज़र किसी संसाधन का अनुरोध करता है, तब उसे कैश मेमोरी में सेव करने का तरीका अपनाता है:
- सर्विस वर्कर कैश मेमोरी: सर्विस वर्कर जांचता है कि संसाधन उसके कैश में है या नहीं और तय करता है कि संसाधन को उसकी प्रोग्राम की गई कैशिंग रणनीतियों के आधार पर खुद लौटाना है या नहीं. नोट जोड़ें ऐसा अपने-आप नहीं होता है. आपको अपने सर्विस वर्कर और नेटवर्क अनुरोधों को इंटरसेप्ट करें, ताकि सेवा से अनुरोध पूरे किए जा सकें कैश मेमोरी में सेव करने की कोशिश करते हैं.
- एचटीटीपी कैश मेमोरी (इसे ब्राउज़र कैश भी कहा जाता है): अगर संसाधन, एचटीटीपी कैश और अभी तक इसकी समय सीमा खत्म नहीं हुई है, ब्राउज़र अपने आप संसाधन को इकट्ठा किया जा सकता है.
- सर्वर-साइड: अगर सर्विस वर्कर कैश या एचटीटीपी कैश में कुछ भी नहीं मिलता है, तो ब्राउज़र, संसाधन का अनुरोध करने के लिए नेटवर्क पर जाता है. अगर संसाधन को सीडीएन में कैश मेमोरी में सेव नहीं किया जाता है, तो अनुरोध को मूल सर्वर पर वापस भेजा जाना चाहिए.
कैश मेमोरी में सेव होने वाली लेयर
सर्विस वर्कर को कैश मेमोरी में सेव किया जा रहा है
सर्विस वर्कर, नेटवर्क-टाइप एचटीटीपी अनुरोधों को बीच में रोकता है और कैश मेमोरी में सेव करने की रणनीति का इस्तेमाल करें. सर्विस वर्कर कैश और एचटीटीपी कैश मेमोरी का इस्तेमाल भी दूसरे कामों के लिए किया जाता है, लेकिन सर्विस वर्कर कैश मेमोरी में सेव करने की ज़्यादा सुविधाएं मिलती हैं, जैसे कि किस चीज़ को कैश मेमोरी में सेव किया जाता है और किस तरह से कैश मेमोरी में सेव किया जाता है, इस पर पूरा कंट्रोल.
सर्विस वर्कर कैश मेमोरी को कंट्रोल करना
एक सर्विस वर्कर event वाले एचटीटीपी अनुरोधों को इंटरसेप्ट करता है
लिसनर (आम तौर पर, fetch
इवेंट). यह
कोड स्निपेट,
कैश-फ़र्स्ट
कैश मेमोरी में सेव करने की रणनीति.
हमारा सुझाव है कि आप वर्कबॉक्स का इस्तेमाल करें, ताकि चीज़ों को नया रूप दिया. उदाहरण के लिए, आपके पास रेगुलर एक्सप्रेशन कोड की एक लाइन के साथ संसाधन यूआरएल पाथ रजिस्टर करें.
import {registerRoute} from 'workbox-routing';
registerRoute(new RegExp('styles/.*\\.css'), callbackHandler);
सर्विस वर्कर को कैश मेमोरी में सेव करने की रणनीतियां और इस्तेमाल के उदाहरण
अगली टेबल में सर्विस वर्कर को कैश मेमोरी में सेव करने की सामान्य रणनीतियों के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि हर रणनीति कब फ़ायदेमंद होती है.
रणनीतियां | फ़्रेशनेस की वजह | इस्तेमाल के उदाहरण |
---|---|---|
नेटवर्क सिर्फ़ | कॉन्टेंट हमेशा अप-टू-डेट होना चाहिए. |
|
नेटवर्क कैश मेमोरी में वापस जाना | नया कॉन्टेंट दिखाना बेहतर होता है. हालाँकि, यदि नेटवर्क विफल होता है या स्थिर रहता है, तो थोड़ी पुरानी सामग्री दिखाने की अनुमति दी जाती है. |
|
फिर से पुष्टि करने के दौरान पुरानी जानकारी | कैश मेमोरी में सेव किया गया कॉन्टेंट तुरंत दिखाया जा सकता है. हालांकि, कैश मेमोरी में सेव किए गए अपडेट किए गए कॉन्टेंट का इस्तेमाल आने वाले समय में इस्तेमाल करें. |
|
पहले कैश मेमोरी, नेटवर्क पर वापस जाएं | यह कॉन्टेंट ज़रूरी नहीं है. साथ ही, कॉन्टेंट की परफ़ॉर्मेंस बेहतर बनाने के लिए, इसे कैश मेमोरी से दिखाया जा सकता है. हालांकि, सर्विस वर्कर को समय-समय पर अपडेट की जांच करनी चाहिए. |
|
सिर्फ़ कैश मेमोरी | कॉन्टेंट में शायद ही कभी बदलाव होता हो. |
|
सर्विस वर्कर को कैश मेमोरी में सेव करने के अन्य फ़ायदे
कैश मेमोरी में सेव किए गए लॉजिक को कंट्रोल करने के अलावा, सर्विस वर्कर कैश मेमोरी में ये सुविधाएं भी मिलती हैं:
- आपकी साइट के ऑरिजिन के लिए ज़्यादा स्टोरेज और स्टोरेज: ब्राउज़र, एचटीटीपी कैश मेमोरी को तय करता है हर ऑरिजिन के हिसाब से संसाधन उपलब्ध होते हैं. अन्य शब्द हैं, तो अगर आपके पास एक से ज़्यादा सबडोमेन हैं, तो वे सभी एक ही एचटीटीपी कैश मेमोरी शेयर करते हैं. कोई नहीं यह गारंटी देता है कि आपके ऑरिजिन/डोमेन का कॉन्टेंट, एचटीटीपी कैश मेमोरी में लंबे समय तक बना रहेगा. इसके लिए उदाहरण के लिए, कोई उपयोगकर्ता ब्राउज़र की सेटिंग के यूज़र इंटरफ़ेस (यूआई) से मैन्युअल तरीके से स्टोरेज खाली करके, कैश मेमोरी को पूरी तरह मिटा सकता है या पेज पर हार्ड-रीलोड ट्रिगर करना. सर्विस वर्कर कैश मेमोरी में, आपकी साइट पर मौजूद यह संभावना होती है कि कैश मेमोरी में सेव किया गया कॉन्टेंट, कैश मेमोरी में सेव रहेगा. देखें परसिस्टेंट स्टोरेज के बारे में ज़्यादा जानें.
- फ़्लेकी नेटवर्क या ऑफ़लाइन अनुभवों के साथ ज़्यादा सुविधाएं: एचटीटीपी कैश मेमोरी के साथ आपको इसमें सिर्फ़ बाइनरी विकल्प होता है: संसाधन को कैश मेमोरी में सेव किया जाता है या नहीं. सर्विस वर्कर को कैश मेमोरी में सेव करने की सुविधा आप छोटी सी "हिचड़ियों" को कम कर सकते हैं बहुत आसान हो जाता है (इसके लिए, "stale-सिर्फ़-रीमिट" रणनीति का इस्तेमाल किया जा सकता है), "सिर्फ़ कैश" रणनीति के साथ पूरा ऑफ़लाइन अनुभव दे सकते हैं या ऐसा कुछ भी कर सकते हैं इनके बीच में, पसंद के मुताबिक बनाए गए यूज़र इंटरफ़ेस (यूआई) शामिल हैं. साथ ही, जिनके पेज के कुछ हिस्से सर्विस वर्कर कैश मेमोरी से आ रहे हैं और जहां ज़रूरी हो वहां कुछ हिस्सों को शामिल नहीं किया जाता है ("कैच हैंडलर सेट करें" रणनीति के साथ).
एचटीटीपी कैश मेमोरी
जब कोई ब्राउज़र पहली बार किसी वेब पेज और संबंधित संसाधनों को लोड करता है, तो वह इन संसाधनों को एचटीटीपी कैश मेमोरी. एचटीटीपी कैश आम तौर पर ब्राउज़र में अपने-आप चालू होता है. हालांकि, ऐसा तब तक होता रहेगा, जब तक कि इसे असली उपयोगकर्ता ने साफ़ तौर पर बंद कर दिया है.
एचटीटीपी कैश मेमोरी का इस्तेमाल करने का मतलब है कि किसी रिसॉर्स को कब कैश मेमोरी में सेव करना है और किस तरीके से लंबा.
एचटीटीपी रिस्पॉन्स हेडर की मदद से, एचटीटीपी कैश मेमोरी की समयसीमा को कंट्रोल करें
जब कोई सर्वर किसी संसाधन के ब्राउज़र अनुरोध का जवाब देता है, तो सर्वर इन कामों के लिए एचटीटीपी रिस्पॉन्स हेडर का इस्तेमाल करता है ब्राउज़र को बताएं कि उसे संसाधन को कितनी देर तक कैश में रखना चाहिए. जवाब के हेडर: अपना वेब कॉन्फ़िगर करना सर्वर पर जाएं.
एचटीटीपी को कैश मेमोरी में सेव करने की रणनीतियां और इस्तेमाल के उदाहरण
एचटीटीपी कैश मेमोरी, सर्विस वर्कर कैश मेमोरी से ज़्यादा आसान है. ऐसा इसलिए, क्योंकि एचटीटीपी कैश मेमोरी में सिर्फ़ ये काम किए जा सकते हैं समय के हिसाब से (टीटीएल) रिसॉर्स खत्म होने का लॉजिक. यहां जाएं: आपको रिस्पॉन्स हेडर की किन वैल्यू का इस्तेमाल करना चाहिए? एचटीटीपी कैश मेमोरी में सेव करने की रणनीतियों के बारे में ज़्यादा जानने के लिए, खास जानकारी देखें.
कैश मेमोरी की समयसीमा खत्म होने का लॉजिक डिज़ाइन करना
इस सेक्शन में सर्विस वर्कर के लिए, कॉल खत्म होने की तारीख एक जैसा लॉजिक इस्तेमाल करने के फ़ायदे और नुकसान के बारे में बताया गया है कैश मेमोरी और एचटीटीपी कैश लेयर के साथ-साथ इन दोनों फ़ाइलों की समयसीमा खत्म होने के लॉजिक के फ़ायदे और नुकसान लेयर.
नीचे दी गई ग्लिच से यह पता चलता है कि सर्विस वर्कर और एचटीटीपी कैश मेमोरी में सेव किए जाने वाले सभी काम करने के तरीके अलग-अलग स्थितियां:
कैश मेमोरी की सभी लेयर के लिए, एक तय समयसीमा खत्म होने का लॉजिक
फ़ायदे और नुकसान के बारे में जानने के लिए, हम तीन स्थितियों पर गौर करेंगे: लंबे समय तक चलने वाले, ठीक-ठाक अवधि वाले समय के लिए, और कम समय के लिए.
स्थितियां | लंबे समय तक कैश मेमोरी में सेव करना | थोड़े समय के लिए कैश मेमोरी में सेव होना | कुछ समय के लिए कैश मेमोरी में सेव करने की सुविधा |
---|---|---|---|
सर्विस वर्कर को कैश मेमोरी में सेव करने की रणनीति | कैश मेमोरी, नेटवर्क पर वापस जा रहा है | फिर से पुष्टि करने के दौरान पुरानी जानकारी | नेटवर्क का कैश मेमोरी में वापस आना |
सर्विस वर्कर कैश TTL | 30 दिन | 1 दिन | 10 मिनट |
एचटीटीपी कैश मेमोरी की ज़्यादा से ज़्यादा उम्र | 30 दिन | 1 दिन | 10 मिनट |
स्थिति: लंबे समय तक कैश मेमोरी में सेव रखना (कैश मेमोरी, नेटवर्क पर वापस जाना)
- कैश मेमोरी में सेव किया गया संसाधन मान्य होने पर (<= 30 दिन): सर्विस वर्कर, कैश मेमोरी में सेव किया गया डेटा वापस करता है संसाधन को तुरंत ऐक्सेस करने की सुविधा मिलती है.
- कैश मेमोरी में सेव किए गए संसाधन की समयसीमा खत्म होने (30 दिनों से ज़्यादा): सर्विस वर्कर, नेटवर्क पर जाता है संसाधन को फ़ेच करें. ब्राउज़र के एचटीटीपी कैश में संसाधन की कॉपी मौजूद नहीं है. इसलिए, संसाधन के लिए सर्वर-साइड पर जाता है.
नुकसान: इस स्थिति में, एचटीटीपी कैश मेमोरी में कम वैल्यू मिलेगी, क्योंकि ब्राउज़र हमेशा सर्विस वर्कर में कैश मेमोरी की समयसीमा खत्म होने पर, अनुरोध को सर्वर-साइड पर भेजें.
स्थिति: थोड़े समय के लिए कैश मेमोरी में सेव करने की सुविधा (फिर से पुष्टि करने के दौरान पुरानी जानकारी)
- कैश मेमोरी में सेव किया गया संसाधन मान्य होने पर (<= 1 दिन): सर्विस वर्कर, कैश मेमोरी में सेव किया गया डेटा वापस करता है और संसाधन को फ़ेच करने के लिए नेटवर्क पर जाता है. ब्राउज़र में संसाधन को अपने HTTP कैश मेमोरी में सेव करता है, ताकि वह उस कॉपी को सर्विस वर्कर को लौटा दे.
- कैश मेमोरी में सेव किए गए संसाधन की समयसीमा खत्म होने पर (> एक दिन): सर्विस वर्कर, कैश मेमोरी में सेव की गई जानकारी वापस करता है और संसाधन को फ़ेच करने के लिए नेटवर्क पर जाता है. ब्राउज़र में संसाधन की कॉपी को उसके एचटीटीपी कैश में सेव किया जाता है, ताकि संसाधन को फ़ेच करने के लिए यह सर्वर-साइड पर जाए.
नुकसान: सर्विस वर्कर को ताकि "दोबारा पुष्टि करने" का पूरा फ़ायदा लिया जा सके चरण पूरा करें.
स्थिति: कुछ समय के लिए कैश मेमोरी में सेव करना (नेटवर्क का कैश मेमोरी में वापस आना)
- कैश मेमोरी में सेव किया गया संसाधन मान्य होने पर (<= 10 मिनट): सर्विस वर्कर नेटवर्क पर जाता है पर क्लिक करें. ब्राउज़र के एचटीटीपी कैश में संसाधन की एक कॉपी होती है, ताकि वह उस व्यक्ति को सर्वर-साइड पर नहीं जाना चाहिए.
- कैश मेमोरी में सेव किए गए संसाधन की समयसीमा खत्म होने पर (10 मिनट से ज़्यादा): सर्विस वर्कर, कैश मेमोरी में सेव की गई जानकारी वापस करता है और संसाधन को फ़ेच करने के लिए नेटवर्क पर जाता है. ब्राउज़र में संसाधन की कॉपी को उसके एचटीटीपी कैश में सेव किया जाता है, ताकि संसाधन को फ़ेच करने के लिए यह सर्वर-साइड पर जाए.
नुकसान: मध्यम अवधि के कैश मेमोरी की तरह ही, सर्विस वर्कर को कैश मेमोरी में सेव करने वाला लॉजिक, एचटीटीपी कैश को ओवरराइड करेगा, ताकि वेब पेज से सबसे नए रिसॉर्स को फ़ेच किया जा सके सर्वर साइड पर क्लिक करें.
सभी स्थितियों में सर्विस वर्कर
सभी स्थितियों में, सर्विस वर्कर कैश मेमोरी तब भी कैश मेमोरी में सेव किए गए संसाधन वापस ला सकती है, जब नेटवर्क अस्थिर. वहीं दूसरी ओर, नेटवर्क के स्थिर या बंद होने पर, एचटीटीपी कैश मेमोरी का इस्तेमाल नहीं किया जा सकता.
सर्विस वर्कर कैश और एचटीटीपी लेयर के लिए, कैश मेमोरी की समयसीमा खत्म होने का अलग-अलग लॉजिक
फ़ायदे और नुकसान के बारे में बताने के लिए, हम लंबी अवधि, मध्यम, और कम समय वाली परफ़ॉर्मेंस पर दोबारा गौर करेंगे .
स्थितियां | लंबे समय तक कैश मेमोरी में सेव करना | थोड़े समय के लिए कैश मेमोरी में सेव होना | कुछ समय के लिए कैश मेमोरी में सेव करने की सुविधा |
---|---|---|---|
सर्विस वर्कर को कैश मेमोरी में सेव करने की रणनीति | कैश मेमोरी, नेटवर्क पर वापस जा रहा है | फिर से पुष्टि करने के दौरान पुरानी जानकारी | नेटवर्क का कैश मेमोरी में वापस आना |
सर्विस वर्कर कैश TTL | 90 दिन | 30 दिन | 1 दिन |
एचटीटीपी कैश मेमोरी की ज़्यादा से ज़्यादा उम्र | 30 दिन | 1 दिन | 10 मिनट |
स्थिति: लंबे समय तक कैश मेमोरी में सेव रखना (कैश मेमोरी, नेटवर्क पर वापस जाना)
- जब सर्विस वर्कर कैश में स्टोर किया गया कोई संसाधन मान्य होता है (<= 90 दिन): सेवा वर्कर, कैश मेमोरी में सेव किए गए संसाधन को तुरंत दिखाता है.
- सर्विस वर्कर कैश मेमोरी में, कैश मेमोरी में सेव किए गए संसाधन की समयसीमा खत्म होने पर (90 दिनों से ज़्यादा): सेवा वर्कर, संसाधन को फ़ेच करने के लिए नेटवर्क पर जाता है. ब्राउज़र में रिसॉर्स हो सकता है, ताकि यह सर्वर-साइड पर जाए.
फ़ायदे और नुकसान
- Pro: सर्विस वर्कर, कैश मेमोरी में सेव किए गए संसाधनों को वापस करता है. ऐसे में, उपयोगकर्ताओं को तुरंत रिस्पॉन्स मिलता है तुरंत.
- प्रो: सर्विस वर्कर के पास इस बात का ज़्यादा कंट्रोल होता है कि कैश मेमोरी का इस्तेमाल कब करना है और कब करना है संसाधनों के नए वर्शन का अनुरोध करने के लिए.
- नुकसान: एक अच्छी तरह से बताई गई सर्विस वर्कर को कैश मेमोरी में सेव करने की रणनीति ज़रूरी है.
स्थिति: बीच के समय के लिए कैश मेमोरी में सेव करने की सुविधा (फिर से पुष्टि करने के दौरान पुरानी जानकारी)
- जब सर्विस वर्कर कैश में स्टोर किया गया कोई संसाधन मान्य होता है (<= 30 दिन): सेवा वर्कर, कैश मेमोरी में सेव किए गए संसाधन को तुरंत दिखाता है.
- सर्विस वर्कर कैश में सेव किए गए संसाधन की समयसीमा खत्म होने पर (30 दिन से ज़्यादा): सेवा वर्कर, संसाधन के लिए नेटवर्क पर जाता है. ब्राउज़र के पास संसाधन की कॉपी, इसकी एचटीटीपी कैश मेमोरी का इस्तेमाल करती है, ताकि यह सर्वर साइड पर भी चले.
फ़ायदे और नुकसान
- Pro: सर्विस वर्कर, कैश मेमोरी में सेव किए गए संसाधनों को वापस करता है. ऐसे में, उपयोगकर्ताओं को तुरंत रिस्पॉन्स मिलता है तुरंत.
- Pro: सर्विस वर्कर यह पक्का कर सकता है कि दिए गए यूआरएल के लिए, next अनुरोध में "बैकग्राउंड में" होने वाली दोबारा पुष्टि की वजह से, यह नेटवर्क से मिलने वाले नए जवाब का शुक्रिया अदा करना है.
- नुकसान: एक अच्छी तरह से बताई गई सर्विस वर्कर को कैश मेमोरी में सेव करने की रणनीति ज़रूरी है.
स्थिति: कुछ समय के लिए कैश मेमोरी में सेव करना (नेटवर्क का कैश मेमोरी में वापस आना)
- जब सर्विस वर्कर कैश में कैश मेमोरी में सेव किया गया संसाधन मान्य होता है (<= 1 दिन): सेवा वर्कर, संसाधन के लिए नेटवर्क पर जाता है. ब्राउज़र, एचटीटीपी से संसाधन दिखाता है तो कैश मेमोरी में सेव करें. नेटवर्क बंद होने पर सर्विस वर्कर, सर्विस वर्कर कैश
- सर्विस वर्कर कैश मेमोरी में, कैश मेमोरी में सेव किए गए संसाधन की समयसीमा खत्म होने पर (> एक दिन): सेवा वर्कर, संसाधन को फ़ेच करने के लिए नेटवर्क पर जाता है. ब्राउज़र यहां से संसाधनों को फ़ेच करता है: अपने एचटीटीपी कैश में कैश किए गए वर्शन के तौर पर नेटवर्क की समयसीमा खत्म हो गई है.
फ़ायदे और नुकसान
- फ़ायदा: नेटवर्क के रुक-रुककर चलने या बंद होने पर, सर्विस वर्कर कैश मेमोरी में सेव करता है संसाधनों को तुरंत ऐक्सेस करने की सुविधा मिलती है.
- नुकसान: सर्विस वर्कर को HTTP कैश मेमोरी को बदलने और "नेटवर्क पहले" सेट करो अनुरोध.
नतीजा
कैश मेमोरी के अलग-अलग कॉम्बिनेशन की जटिलता को देखते हुए, एक नियम तय नहीं किया जा सकता जो सभी मामलों को कवर करती है. हालांकि, पिछले सेक्शन में मिली जानकारी के मुताबिक, कुछ कैश मेमोरी की रणनीतियां डिज़ाइन करते समय इन सुझावों पर ध्यान दें:
- सर्विस वर्कर कैश मेमोरी में सेव किए गए लॉजिक का, एचटीटीपी कैश मेमोरी में सेव होने की समयसीमा के मुताबिक होना ज़रूरी नहीं है लॉजिक. अगर संभव हो, तो सर्विस वर्कर को देने के लिए सर्विस वर्कर में ज़्यादा समय सीमा खत्म होने वाले लॉजिक का इस्तेमाल करें मिलता है.
- एचटीटीपी कैश मेमोरी अब भी अहम भूमिका निभाती है. हालांकि, नेटवर्क के सुरक्षित होने पर, यह भरोसेमंद नहीं होता स्थिर या बंद है.
- यह पक्का करने के लिए कि आपका सर्विस वर्कर कैश मेमोरी में सेव कर रहा है, हर संसाधन के लिए कैश मेमोरी में डेटा सेव करने की रणनीतियों को फिर से देखें रणनीति, एचटीटीपी कैश मेमोरी से मेल नहीं खाने की अपनी वैल्यू देती है.