सर्विस वर्कर की खास जानकारी

सर्विस वर्कर शानदार यूटिलिटी देते हैं, लेकिन पहली बार काम करना मुश्किल हो सकता है. वर्कबॉक्स, सर्विस वर्कर को इस्तेमाल करना आसान बनाता है. हालाँकि, सर्विस वर्कर कठिन समस्याओं को हल करते हैं. इसलिए, टेक्नोलॉजी को समझना मुश्किल होता है. इसलिए, दस्तावेज़ के ये पहले कुछ हिस्से वर्कबॉक्स की विशेषताओं पर जाने से पहले उस बुनियादी टेक्नोलॉजी के बारे में बताएंगे.

सर्विस वर्कर की चल रही सूची देखने के लिए, अपने पता बार में chrome://serviceworker-internals/ डालें.

सर्विस वर्कर की चल रही सूची.

सर्विस वर्कर क्या उपलब्ध कराते हैं?

सर्विस वर्कर, खास JavaScript ऐसेट होते हैं. ये वेब ब्राउज़र और वेब सर्वर के बीच प्रॉक्सी के तौर पर काम करते हैं. इनका मकसद, ऑफ़लाइन ऐक्सेस की सुविधा देकर लोगों को भरोसेमंद कॉन्टेंट भेजने के साथ-साथ पेज की परफ़ॉर्मेंस को बेहतर बनाना है.

एक बेहतर, ऐप्लिकेशन जैसा लाइफ़साइकल

सर्विस वर्कर, मौजूदा वेबसाइटों को बेहतर बनाने के लिए होते हैं. इसका मतलब है कि अगर किसी ब्राउज़र पर मौजूद उपयोगकर्ता, सर्विस वर्कर का इस्तेमाल नहीं करने वाली वेबसाइटों पर जाते हैं, तो किसी भी बेसलाइन फ़ंक्शन में रुकावट नहीं आएगी. वेब इसी के बारे में है.

सर्विस वर्कर, प्लैटफ़ॉर्म-खास ऐप्लिकेशन की तरह ही लाइफ़साइकल की मदद से, वेबसाइटों को धीरे-धीरे बेहतर बनाते हैं. सोचें कि किसी ऐप स्टोर से, कोई खास ऐप्लिकेशन इंस्टॉल किए जाने पर क्या होता है:

  • ऐप्लिकेशन डाउनलोड करने का अनुरोध किया गया.
  • ऐप्लिकेशन डाउनलोड और इंस्टॉल होता है.
  • यह ऐप्लिकेशन इस्तेमाल के लिए तैयार है और इसे लॉन्च किया जा सकता है.
  • नई रिलीज़ के लिए ऐप्लिकेशन को अपडेट किया जाता है.

सर्विस वर्कर का लाइफ़साइकल भी मिलता-जुलता होता है, लेकिन इसमें बेहतर बनाने की प्रोसेस को बेहतर बनाया जाता है. नया सर्विस वर्कर इंस्टॉल करने वाले वेब पेज पर पहली बार विज़िट करने पर, सर्विस वर्कर डाउनलोड होने के दौरान, पेज पर बेसलाइन फ़ंक्शन मिलता है. सर्विस वर्कर को इंस्टॉल और चालू करने के बाद, यह बेहतर विश्वसनीयता और स्पीड देने के लिए पेज को कंट्रोल करता है.

JavaScript से कैश मेमोरी में सेव करने वाले एपीआई का ऐक्सेस

सर्विस वर्कर टेक्नोलॉजी का एक ज़रूरी पहलू है Cache इंटरफ़ेस, जो कैश मेमोरी में सेव करने का एक तरीका है, जो एचटीटीपी कैश से पूरी तरह अलग है. Cache इंटरफ़ेस को सर्विस वर्कर स्कोप और मुख्य थ्रेड के स्कोप से ऐक्सेस किया जा सकता है. इससे, Cache इंस्टेंस का इस्तेमाल करके, उपयोगकर्ता की मदद से इंटरैक्शन करने की कई संभावनाएं होती हैं.

एचटीटीपी हेडर में बताए गए कैश मेमोरी में डेटा सेव करने के निर्देशों से, एचटीटीपी कैश मेमोरी पर असर पड़ता है. हालांकि, Cache इंटरफ़ेस को JavaScript से प्रोग्राम किया जा सकता है. इसका मतलब है कि नेटवर्क अनुरोधों के रिस्पॉन्स को कैश मेमोरी में सेव करने के लिए, यह इस बात पर आधारित हो सकता है कि किसी वेबसाइट के लिए कौनसा लॉजिक सबसे अच्छा है. उदाहरण के लिए:

  • स्टैटिक ऐसेट के लिए पहले अनुरोध करने पर, उन्हें कैश मेमोरी में सेव किया जा सकता है. साथ ही, हर अनुरोध के लिए उन्हें कैश मेमोरी से ही दिखाया जा सकता है.
  • पेज का मार्कअप कैश में स्टोर करें, लेकिन सिर्फ़ ऑफ़लाइन मामलों में कैश मेमोरी से मार्कअप दिखाएं.
  • कैश मेमोरी से कुछ एसेट के लिए पुराने वर्शन वाले रिस्पॉन्स दिखाएं, लेकिन उसे बैकग्राउंड में नेटवर्क से अपडेट करें.
  • नेटवर्क से कुछ कॉन्टेंट को स्ट्रीम करें और इसे कैश मेमोरी में मौजूद ऐप्लिकेशन शेल के साथ जोड़ें, ताकि कॉन्टेंट की परफ़ॉर्मेंस बेहतर हो सके.

इनमें से हर एक, कैशिंग की रणनीति का उदाहरण है. कैश मेमोरी में सेव करने की रणनीतियों से ऑफ़लाइन अनुभव मिलते हैं. साथ ही, इंतज़ार के समय को फिर से पुष्टि करने की प्रोसेस के साथ-साथ बेहतर परफ़ॉर्मेंस दी जा सकती है. इससे एचटीटीपी कैश चालू होता है. वर्कबॉक्स में जाने से पहले, कैश मेमोरी में सेव करने की कुछ रणनीतियों और कोड की समीक्षा की जाएगी, जो उन्हें काम करने में मदद करती हैं.

एसिंक्रोनस और इवेंट-ड्रिवन एपीआई

नेटवर्क पर डेटा ट्रांसफ़र करना, आम तौर पर एसिंक्रोनस होता है. किसी एसेट के लिए अनुरोध करने, सर्वर को अनुरोध का जवाब देने, और जवाब को डाउनलोड करने में समय लगता है. इसमें लगने वाला समय अलग-अलग और तय नहीं है. सर्विस वर्कर, इवेंट-ड्रिवन एपीआई की मदद से एसिंक्रोनस तरीके से इस तरह के काम करते हैं. इसके लिए, वे इवेंट के लिए कॉलबैक का इस्तेमाल करते हैं:

जाने-पहचाने addEventListener एपीआई का इस्तेमाल करके, इवेंट रजिस्टर किए जा सकते हैं. ये सभी इवेंट, Cache इंटरफ़ेस के साथ इंटरैक्ट कर सकते हैं. खास तौर पर, नेटवर्क अनुरोध भेजे जाने के दौरान कॉलबैक चलाने की सुविधा, भरोसेमंद और तेज़ स्पीड देने के लिए बेहद ज़रूरी है.

JavaScript में एसिंक्रोनस काम करने के लिए प्रॉमिस का इस्तेमाल करना शामिल है. प्रॉमिस async और await को भी मज़बूत बनाता है, इसलिए उन JavaScript सुविधाओं का इस्तेमाल सर्विस वर्कर (और Workbox!) कोड को आसान बनाने के लिए भी किया जा सकता है, ताकि डेवलपर को बेहतर अनुभव मिल सके.

प्रीकैशिंग और रनटाइम कैशिंग

सर्विस वर्कर और Cache इंस्टेंस के बीच इंटरैक्शन में दो अलग-अलग कैशिंग कॉन्सेप्ट शामिल होते हैं: प्रीकैशिंग और रनटाइम कैशिंग. सर्विस वर्कर को मिलने वाले फ़ायदे, इनमें से हर एक चीज़ का केंद्र हैं.

प्रीकैशिंग, एसेट को समय से पहले कैश मेमोरी में सेव करने की प्रक्रिया है. आम तौर पर, सर्विस वर्कर को इंस्टॉल करने के दौरान ऐसा होता है. प्रीकैशिंग की मदद से, मुख्य स्टैटिक ऐसेट और ऑफ़लाइन ऐक्सेस के लिए ज़रूरी मटीरियल को डाउनलोड किया जा सकता है और Cache इंस्टेंस में सेव किया जा सकता है. इस तरह की कैश मेमोरी में सेव करने से, बाद वाले उन पेजों पर पेज स्पीड भी बढ़ जाती है जिनके लिए पहले से कैश मेमोरी में सेव की गई एसेट की ज़रूरत होती है.

रनटाइम कैशिंग तब होती है, जब ऐसेट पर कैश मेमोरी की रणनीति लागू की जाती है, क्योंकि रनटाइम के दौरान नेटवर्क से उनका अनुरोध किया जाता है. इस तरह की कैश मेमोरी इस्तेमाल करना फ़ायदेमंद होता है, क्योंकि इससे उन पेजों और एसेट के ऑफ़लाइन ऐक्सेस की गारंटी मिलती है जिन पर उपयोगकर्ता पहले ही जा चुका है.

अगर इन तरीकों को जोड़ा जाए, तो सर्विस वर्कर में Cache इंटरफ़ेस का इस्तेमाल करने से उपयोगकर्ता अनुभव को बहुत ज़्यादा फ़ायदा होता है. साथ ही, ये सामान्य वेब पेजों पर ऐप्लिकेशन जैसा व्यवहार देते हैं.

मुख्य थ्रेड से आइसोलेशन

JavaScript की परफ़ॉर्मेंस की स्थिति वेब के लिए एक बड़ी चुनौती है. उपयोगकर्ता के नज़रिए से देखें, तो यह डिवाइस की क्षमता और तेज़ स्पीड वाले इंटरनेट के ऐक्सेस पर निर्भर करता है. JavaScript का इस्तेमाल जितना ज़्यादा होगा, उपयोगकर्ताओं को दिलचस्प अनुभव देने वाली तेज़ वेबसाइटें बनाना उतना ही मुश्किल हो जाएगा.

सर्विस वर्कर वेब वर्कर होते हैं, जहां उनका सारा काम उनके ही थ्रेड पर होता है. इसका मतलब है कि सर्विस वर्कर के टास्क, मुख्य थ्रेड पर मौजूद अन्य टास्क के साथ अटेंशन के लिए मुकाबला नहीं कर पाएंगे. सर्विस वर्कर डिज़ाइन को ध्यान में रखकर सबसे पहले काम करते हैं!

आगे की सड़क

यह दस्तावेज़ सिर्फ़ खास जानकारी है. वर्कबॉक्स को कवर करने से पहले, सर्विस वर्कर के बारे में कुछ और विषय भी होते हैं. हालांकि, बेफ़िक्र रहें: सर्विस वर्कर की अच्छी समझ के साथ, वर्कबॉक्स का इस्तेमाल करना ज़्यादा आसान और ज़्यादा प्रॉडक्टिव अनुभव होगा.