सर्विस वर्कर शानदार सुविधाएं देते हैं, लेकिन शुरुआत में उनके साथ काम करना मुश्किल हो सकता है. वर्कबॉक्स, सर्विस वर्कर का इस्तेमाल करने में आसान बनाता है. हालांकि, सर्विस वर्कर मुश्किल समस्याओं को हल करते हैं. इसलिए, इस टेक्नोलॉजी को समझना बिना उसकी जानकारी के मुश्किल होगा. इसलिए, वर्कबॉक्स के बारे में जानकारी पाने से पहले, दस्तावेज़ के इन शुरुआती कुछ हिस्सों में उस टेक्नोलॉजी के बारे में जानकारी दी जाएगी.
सर्विस वर्कर की चल रही सूची देखने के लिए, अपने पता बार में chrome://serviceworker-internals/
डालें.
सर्विस वर्कर क्या सेवाएं देते हैं?
सर्विस वर्कर, खास तरह की JavaScript ऐसेट होती हैं, जो वेब ब्राउज़र और वेब सर्वर के बीच प्रॉक्सी का काम करती हैं. इनका मकसद ऑफ़लाइन ऐक्सेस देकर, पेज की परफ़ॉर्मेंस को बेहतर बनाना है.
यह ऐप्लिकेशन की तरह लाइफ़साइकल होने पर, लगातार बेहतर होता जा रहा है
सर्विस वर्कर, मौजूदा वेबसाइटों को बेहतर बनाने में मदद करते हैं. इसका मतलब है कि अगर ब्राउज़र पर सर्विस वर्कर का इस्तेमाल करने की सुविधा मौजूद नहीं है, तो उपयोगकर्ता उन वेबसाइटों पर जाते हैं जिनमें इन सुविधाओं का इस्तेमाल किया जाता है. वेब इसी के बारे में है.
सर्विस वर्कर, प्लैटफ़ॉर्म के हिसाब से बनाए गए ऐप्लिकेशन से मिलते-जुलते लाइफ़साइकल के ज़रिए वेबसाइटों को धीरे-धीरे बेहतर बनाते हैं. सोचें कि जब ऐप स्टोर से कोई खास ऐप्लिकेशन इंस्टॉल किया जाता है, तो क्या होता है:
- ऐप्लिकेशन को डाउनलोड करने का अनुरोध किया जाता है.
- ऐप्लिकेशन डाउनलोड और इंस्टॉल हो जाता है.
- यह ऐप्लिकेशन इस्तेमाल के लिए तैयार है और इसे लॉन्च किया जा सकता है.
- नई रिलीज़ के लिए ऐप्लिकेशन अपडेट हो जाता है.
सर्विस वर्कर का लाइफ़साइकल एक जैसा होता है, लेकिन समय के साथ उसे बेहतर बनाने की प्रोसेस में कुछ समय के लिए बदलाव किया जाता है. किसी नए सर्विस वर्कर को इंस्टॉल करने वाले वेब पेज की पहली विज़िट में, सर्विस वर्कर को डाउनलोड करने के दौरान, किसी पेज की शुरुआती विज़िट उसका बेसलाइन फ़ंक्शन देती है. सर्विस वर्कर के इंस्टॉल और चालू होने के बाद, यह बेहतर विश्वसनीयता और स्पीड देने के लिए पेज को कंट्रोल करता है.
JavaScript से चलने वाले कैश मेमोरी एपीआई का ऐक्सेस
सर्विस वर्कर टेक्नोलॉजी का एक ज़रूरी पहलू Cache
इंटरफ़ेस है, जो एचटीटीपी कैश से पूरी तरह अलग कैश मेमोरी में सेव करने का तरीका है.
Cache
इंटरफ़ेस को सर्विस वर्कर और मुख्य थ्रेड के स्कोप में ऐक्सेस किया जा सकता है.
इससे Cache
इंस्टेंस के साथ, उपयोगकर्ता की ओर से इंटरैक्शन किए जा सकते हैं.
एचटीटीपी कैश मेमोरी पर एचटीटीपी हेडर में बताए गए कैशिंग डायरेक्टिव का असर पड़ता है. हालांकि, Cache
इंटरफ़ेस को JavaScript के ज़रिए प्रोग्राम किया जा सकता है.
इसका मतलब है कि नेटवर्क के अनुरोधों के लिए रिस्पॉन्स को कैश मेमोरी में सेव किया जा सकता है. यह इस बात पर निर्भर करता है कि किसी वेबसाइट के लिए कौनसा लॉजिक सबसे सही है.
उदाहरण के लिए:
- पहले अनुरोध पर, स्टैटिक ऐसेट को कैश मेमोरी में सेव करें. साथ ही, हर बाद के अनुरोध के लिए उन्हें कैश मेमोरी से ही दिखाएं.
- पेज का मार्कअप कैश मेमोरी में सेव करते हैं, लेकिन ऑफ़लाइन होने पर सिर्फ़ कैश मेमोरी से मार्कअप दिखाते हैं.
- कैश मेमोरी से मिली कुछ एसेट के लिए, पुरानी जानकारी उपलब्ध कराएं. हालांकि, उसे बैकग्राउंड में नेटवर्क से अपडेट करें.
- नेटवर्क से कुछ हिस्से का कॉन्टेंट स्ट्रीम करें और उसे कैश मेमोरी में मौजूद ऐप्लिकेशन शेल के साथ जोड़ें, ताकि उपयोगकर्ताओं को दिखने वाला अनुभव बेहतर हो सके.
इनमें से हर एक, कैश मेमोरी में सेव होने की रणनीति का उदाहरण है. कैश मेमोरी में सेव करने की रणनीतियां, ऑफ़लाइन अनुभव को बढ़ावा देती हैं. साथ ही, इंतज़ार के समय की दोबारा जांच करने के अलग-अलग चरणों की मदद से, बेहतर परफ़ॉर्मेंस मिल सकती है. इससे एचटीटीपी कैश शुरू हो जाता है. वर्कबॉक्स को शुरू करने से पहले, कैश मेमोरी में डेटा सेव करने की कुछ रणनीतियों और कोड की समीक्षा की जाएगी जो उन्हें काम करने में मदद करती हैं.
एसिंक्रोनस और इवेंट-ड्रिवन एपीआई
नेटवर्क पर डेटा ट्रांसफ़र करना मूल रूप से एसिंक्रोनस होता है. किसी ऐसेट का अनुरोध करने, सर्वर को उस अनुरोध का जवाब देने, और रिस्पॉन्स को डाउनलोड करने में समय लगता है. इसमें लगने वाला समय अलग-अलग होता है और अनिश्चित होता है. सर्विस वर्कर, इस तरह के इवेंट के लिए कॉलबैक का इस्तेमाल करके इवेंट-ड्रिवन एपीआई के ज़रिए इस एसिंक्रोनसता को मैनेज करते हैं:
- जब कोई सर्विस वर्कर इंस्टॉल कर रहा हो.
- जब कोई सर्विस वर्कर चालू हो.
- जब सर्विस वर्कर नेटवर्क अनुरोध का पता लगाता है.
इवेंट रजिस्टर करने के लिए, जाने-पहचाने addEventListener
एपीआई का इस्तेमाल किया जा सकता है.
ये सभी इवेंट, Cache
इंटरफ़ेस के साथ इंटरैक्ट कर सकते हैं.
खास तौर पर, नेटवर्क अनुरोध भेजे जाने के दौरान कॉलबैक चलाने की सुविधा, खरीदारों को भरोसेमंद और तेज़ी से काम करने में मदद करती है.
JavaScript में एसिंक्रोनस काम करने के लिए promises का इस्तेमाल करें.
प्रॉमिस async
और await
को भी अंडरपिन करती है. इसलिए, सर्विस वर्कर (और Workbox!) कोड को आसान बनाने के लिए भी JavaScript की इन सुविधाओं का इस्तेमाल किया जा सकता है. इससे डेवलपर को बेहतर अनुभव मिलेगा.
पहले से कैश मेमोरी में सेव करना और रनटाइम के दौरान कैश मेमोरी में सेव करना
सर्विस वर्कर और Cache
इंस्टेंस के बीच के इंटरैक्शन में, कैश मेमोरी के दो अलग-अलग सिद्धांत होते हैं: पहले से कैश मेमोरी में सेव करना और रनटाइम के दौरान कैश मेमोरी में सेव करना.
ये सभी बातें, सर्विस वर्कर को मिलने वाले फ़ायदों का मुख्य हिस्सा होती हैं.
प्रीकैशिंग, एसेट को समय से पहले कैश मेमोरी में सेव करने की प्रोसेस है.
आम तौर पर, ऐसा सर्विस वर्कर को इंस्टॉल करने के दौरान होता है.
प्रीकैशिंग का इस्तेमाल करके, ऑफ़लाइन ऐक्सेस के लिए ज़रूरी मुख्य स्टैटिक ऐसेट और कॉन्टेंट को Cache
इंस्टेंस में डाउनलोड और सेव किया जा सकता है.
इस तरह की कैश मेमोरी, उन पेजों के लिए पेज स्पीड को बेहतर बनाती है जिनके लिए, पहले से कैश मेमोरी में सेव की गई ऐसेट की ज़रूरत होती है.
रनटाइम कैश मेमोरी तब होती है, जब रनटाइम के दौरान नेटवर्क से अनुरोध करने पर, ऐसेट पर कैश मेमोरी की रणनीति लागू की जाती है. इस तरह की कैश मेमोरी इसलिए फ़ायदेमंद है, क्योंकि इससे उन पेजों और ऐसेट को बिना इंटरनेट के ऐक्सेस करने की गारंटी मिलती है जिन पर उपयोगकर्ता पहले ही जा चुका है.
सर्विस वर्कर में Cache
इंटरफ़ेस का इस्तेमाल करने के इन तरीकों को जोड़ने पर, उपयोगकर्ता अनुभव को बहुत ज़्यादा फ़ायदा होता है. साथ ही, सामान्य वेब पेजों पर ऐप्लिकेशन जैसा व्यवहार होता है.
मुख्य थ्रेड से अलग करना
JavaScript की परफ़ॉर्मेंस की स्थिति, वेब के लिए लगातार नई चुनौती बन रही है. उपयोगकर्ता के नज़रिए से देखें, तो यह डिवाइस की क्षमताओं और हाई-स्पीड इंटरनेट के ऐक्सेस पर निर्भर करता है. JavaScript का जितना ज़्यादा इस्तेमाल किया जाता है, उपयोगकर्ता को शानदार अनुभव देने वाली तेज़ी से वेबसाइटें बनाना उतना ही मुश्किल होता जाता है.
सर्विस वर्कर, वेब वर्कर की तरह होते हैं. इसमें वे सभी काम अपने थ्रेड पर करते हैं. इसका मतलब है कि सर्विस वर्कर के टास्क, मुख्य थ्रेड पर मौजूद अन्य टास्क के साथ मुकाबला नहीं करेंगे. सर्विस वर्कर, उपयोगकर्ताओं को ध्यान में रखकर डिज़ाइन किए गए हैं!
आगे सड़क
यह दस्तावेज़ सिर्फ़ एक खास जानकारी है. वर्कबॉक्स को ठीक करने से पहले सर्विस वर्कर के बारे में जानने के लिए कुछ और विषय हैं, लेकिन निश्चिंत रहें: सर्विस वर्कर की अच्छी समझ के साथ, वर्कबॉक्स का उपयोग करना एक आसान और ज़्यादा उपयोगी अनुभव होगा.