एक्सटेंशन सर्विस वर्कर, अब तब तक जीवित रह सकते हैं, जब तक उन्हें इवेंट मिलते रहेंगे. इससे एक्सटेंशन सेवा कर्मियों की विश्वसनीयता बढ़ जाती है, लेकिन इसमें एक ऐसा चूक है जिससे आपको बचना चाहिए.
Chrome 110 (7 फ़रवरी, 2023 से बीटा वर्शन में) से, एक्सटेंशन सर्विस वर्कर तब तक जीवित रहते हैं जब तक उन्हें इवेंट मिल रहे हैं. यह एक्सटेंशन सर्विस वर्कर के पिछले इंप्लीमेंटेशन में समय की समस्या को ठीक करता है. नए इवेंट जब इवेंट की सूची में थे, तब टाइम आउट हो सकते थे. साथ ही, एसिंक्रोनस काम को कम करने के लिए टाइम आउट हो सकते थे. यह सुधार, एक्सटेंशन सर्विस वर्कर के लिए पांच मिनट की ज़्यादा से ज़्यादा लाइफ़टाइम लाइफ़टाइम की सीमा को हटा देता है.
इस लेख में बताया गया है कि इन गतिविधियों में किस तरह बदलाव हुआ है.
बैकग्राउंड
एक्सटेंशन सर्विस वर्कर ज़्यादातर वेब सर्विस वर्कर की तरह काम करते हैं, लेकिन सर्विस वर्कर इवेंट के अलावा, एक्सटेंशन सर्विस वर्कर, एक्सटेंशन इवेंट को भी सुन सकते हैं. हालांकि, सामान्य सर्विस वर्कर इवेंट की वजह से सर्विस वर्कर का जीवनकाल बढ़ जाता है. हालांकि, 110 के रिलीज़ होने से पहले, सिर्फ़ कुछ ही एक्सटेंशन प्लैटफ़ॉर्म इवेंट ने एक्सटेंशन सर्विस वर्कर को जीवित रखा.
आम तौर पर, नीचे दी गई शर्तों में से किसी एक के पूरा होने के बाद Chromium, सर्विस वर्कर को बंद कर देता है:
- सर्विस वर्कर को तीस सेकंड से भी ज़्यादा समय से कोई इवेंट नहीं मिला है और कोई भी बकाया, लंबे समय तक चलने वाला कोई काम नहीं है. अगर इस दौरान किसी सर्विस वर्कर को कोई इवेंट मिलता है, तो इस्तेमाल में न होने वाले टाइमर को हटा दिया गया था.
- लंबे समय से चल रहे किसी टास्क को पूरा होने में पांच मिनट से ज़्यादा समय लग रहा है और पिछले तीस सेकंड में कोई इवेंट नहीं मिला है.
कुछ समय तक इस्तेमाल न होने वाले टाइमर या लंबे समय तक चलने वाले टास्क टाइमर की समयसीमा खत्म होने से पहले, नए सर्विस वर्कर इवेंट मिलने से टाइमर रीसेट हो जाएंगे. साथ ही, सर्विस वर्कर का जीवनकाल भी बढ़ जाएगा.
माफ़ करें, यह तरीका एक्सटेंशन इवेंट पर लागू नहीं हुआ. एक्सटेंशन इवेंट, एक्सटेंशन सर्विस वर्कर को सक्रिय कर सकते हैं और उसे इवेंट पूरा होने तक जीवित रख सकते हैं, लेकिन यह तीस सेकंड के निष्क्रिय टाइमर को बढ़ा नहीं सकता. इसका मतलब यह था कि आखिरी एक्सटेंशन इवेंट के पूरा होने के बाद, किसी भी समय एक्सटेंशन सर्विस वर्कर को बंद किया जा सकता था, भले ही ब्राउज़र ने एक्सटेंशन को हाल ही में कोई नया इवेंट भेजा हो.
क्या बदलाव हुए हैं
Chrome 110 से, सभी इवेंट के दौरान कुछ समय के लिए डिवाइस इस्तेमाल न होने के टाइमर को रीसेट कर दिया जाता है. साथ ही, अगर कोई इवेंट बाकी है, तो डिवाइस इस्तेमाल में न होने पर टाइम आउट नहीं होगा. दूसरे शब्दों में, यह मानते हुए कि कोई अनपेक्षित रुकावट नहीं है, एक्सटेंशन सर्विस वर्कर तब तक आमतौर पर तब तक जीवित रहेंगे, जब तक वे सक्रिय रूप से इवेंट को प्रोसेस कर रहे हैं. इसके अलावा, कुछ खास Chrome API (जैसे, chrome.storage.local.get()
) को किए जाने वाले कॉल से टाइम आउट रीसेट हो जाएगा. खास तौर पर:
- 30 सेकंड तक कोई गतिविधि न होने पर सर्विस वर्कर, बंद हो जाता है. (कोई इवेंट पाना या किसी एक्सटेंशन API को कॉल करना इस टाइमर को रीसेट करता है).
- अगर किसी इवेंट या एपीआई कॉल जैसे किसी अनुरोध को प्रोसेस होने में पांच मिनट से ज़्यादा समय लगता है, तो सर्विस वर्कर बंद हो जाता है.
नेटिव मैसेजिंग जैसे कुछ एपीआई से, कीप-अलाइव (चालू रखें) की सुविधा मिलती है. इससे ये दोनों टाइमर रद्द हो जाते हैं.
हम लंबे समय तक चलने वाले कामों को बंद किए बिना, यह पक्का करने के लिए अब भी काम कर रहे हैं कि ज़रूरत पड़ने पर एक्सटेंशन सर्विस वर्कर को बंद कर दिया जाए. जब भी संभव हो, संसाधन को ध्यान में रखकर एक्सटेंशन सर्विस करने वाले कर्मचारियों को हमेशा फ़ायदा मिलना चाहिए. इसके अलावा, एक्सटेंशन को ऐसे बंद होने की तैयारी करनी चाहिए कि एक्सटेंशन अचानक बंद हो जाएं. यह ऐसी घटनाओं से बचाव करता है जिनके बारे में अंदाज़ा नहीं लगाया जा सकता. जैसे, उपयोगकर्ता जबरन ब्राउज़र को बंद कर देता है.
Unsplash पर पॉला गुएरेरो की फ़ोटो