मैं यहां कुछ अन्य उत्तरों पर विस्तार करना चाहता हूं, और यह देखने के लिए कि मैं सेवा कार्यकर्ता को उत्पादन में लाने के दौरान किस रणनीति का उपयोग कर सकता हूं, यह सुनिश्चित करने के लिए कि मैं कोई आवश्यक परिवर्तन कर सकता हूं " उन परिवर्तनों में आपके द्वारा उत्पादन में खोजे जाने वाले किसी भी मामूली बग को ठीक करना शामिल हो सकता है, या यह हो सकता है (लेकिन उम्मीद है कि) में एक दुर्बल बग-तथाकथित "मार स्विच" के कारण सेवा कार्यकर्ता को बेअसर करना शामिल हो सकता है।
इस उत्तर के प्रयोजनों के लिए, मान लीजिए कि आप
navigator.serviceWorker.register('service-worker.js');
अपने पृष्ठों पर
फोन, आपकी सेवा कार्यकर्ता जावास्क्रिप्ट संसाधन service-worker.js
है, जिसका अर्थ ग्रहण करते हैं।
मेरा पहला सलाह यह है कि मानक HTTP कैशिंग आपके सेवा कार्यकर्ता की जावास्क्रिप्ट को अद्यतित तरीके से कैसे प्रभावित करती है, इस पर पढ़ना है। इसके बारे में एक गलत मात्रा में गलत जानकारी है, और मुझे उम्मीद है कि this Stack Overflow answer इसमें से कुछ को साफ़ करता है, और बताता है कि अपडेट के लिए सेवा श्रमिकों की जांच कैसे की जाती है। उन लोगों के लिए सारांशित करने के लिए जो उस अन्य उत्तर पर क्लिक नहीं करते हैं, आपका ब्राउज़र HTTP सेवा कैश निर्देशों का सम्मान करेगा, अधिकतम 1 दिन तक, यह निर्धारित करते समय कि आपके सेवा कार्यकर्ता जावास्क्रिप्ट की ताजा प्रति का अनुरोध करना है या कैश की गई प्रतिलिपि का उपयोग करना है या नहीं । नतीजतन, यदि आप एक बग को ठीक करने के लिए नई सेवा कार्यकर्ता जावास्क्रिप्ट को त्वरित रूप से रोल करने के लिए लचीलापन चाहते हैं, तो HTTP कैशिंग निर्देशों के साथ service-worker.js
पर सेवा करें, इसे कम या 0 अधिकतम आयु दें।
एक बार आपके service-worker.js
उचित HTTP कैशिंग निर्देशों के साथ परोसा जाता है, तो प्रश्न आपके service-worker.js
कोड में प्रारंभिक समस्या को हल करने के तरीके के बारे में बताता है। यदि यह एक छोटा बग फिक्स है, तो आप स्पष्ट रूप से केवल बदलाव कर सकते हैं और अपने होस्टिंग वातावरण में अपने service-worker.js
को फिर से तैनात कर सकते हैं। यदि कोई स्पष्ट बग फिक्स नहीं है, और आप अपने उपयोगकर्ताओं को एक समाधान करने के लिए समय निकालते समय बग्गी सेवा कार्यकर्ता कोड नहीं छोड़ना चाहते हैं, यह एक अच्छा विचार है, no-opservice-worker.js
आसान, जैसे निम्नलिखित:
// A simple, no-op service worker that takes immediate control.
self.addEventListener('install',() => {
// Skip over the "waiting" lifecycle state, to ensure that our
// new service worker is activated immediately, even if there's
// another tab open controlled by our older service worker code.
self.skipWaiting();
});
/*
self.addEventListener('activate',() => {
// Optional: Get a list of all the current open windows/tabs under
// our service worker's control, and force them to reload.
// This can "unbreak" any open windows/tabs as soon as the new
// service worker activates, rather than users having to manually reload.
self.clients.matchAll({type: 'window'}).then(windowClients => {
windowClients.forEach(windowClient => {
windowClient.navigate(windowClient.url);
});
});
});
*/
अपने सभी कोई सेशन service-worker.js
शामिल करने की जरूरत है होना चाहिए कि। चूंकि कोई fetch
हैंडलर पंजीकृत नहीं है, इसलिए नियंत्रित पृष्ठों से सभी नेविगेशन और संसाधन अनुरोध सीधे नेटवर्क के खिलाफ जा रहे हैं, प्रभावी रूप से आपको वही व्यवहार दे रहे हैं जो बिना किसी सेवा कर्मचारी थे।
आगे बढ़ना संभव है, और Cache Storage API, या explicitly unregister the service worker का उपयोग करके संग्रहीत सब कुछ जबरन हटा दें। सबसे आम मामलों के लिए, शायद यह अधिक हो जाएगा, और उपर्युक्त अनुशंसाओं के बाद आपको ऐसे राज्य में लाने के लिए पर्याप्त होना चाहिए जहां आपके वर्तमान उपयोगकर्ताओं को अपेक्षित व्यवहार मिल जाए, और आप अपनी बग तय करने के बाद अपडेट को पुन: नियोजित करने के लिए तैयार हों । नो-ऑप सेवा कार्यकर्ता शुरू करने के साथ कुछ डिग्री ओवरहेड भी शामिल है, इसलिए यदि आप सार्थक सेवा कार्यकर्ता कोड को फिर से तैनात करने की कोई योजना नहीं रखते हैं तो आप unregistering the service worker के मार्ग पर जा सकते हैं।
यदि आप पहले से ही ऐसी परिस्थिति में हैं जिसमें आप service-worker.js
की सेवा कर रहे हैं, तो HTTP कैशिंग निर्देशों के साथ यह आपके जीवनकाल की प्रतीक्षा कर रहा है जो आपके उपयोगकर्ताओं की प्रतीक्षा कर सकता है, ध्यान रखें कि डेस्कटॉप ब्राउज़र पर Shift + Reload पृष्ठ को मजबूर करेगा सेवा कार्यकर्ता नियंत्रण के बाहर पुनः लोड करें। प्रत्येक उपयोगकर्ता को यह नहीं पता होगा कि यह कैसे करें, और मोबाइल उपकरणों पर यह संभव नहीं है। इसलिए एक व्यवहार्य रोलबैक योजना के रूप में Shift + Reload पर भरोसा न करें।
आपके उत्तर के लिए धन्यवाद। विकल्प 1 लाइव वेबसाइट के लिए सस्ती नहीं है। मैं विकल्प 2 पर एक नज़र डालेगा, लेकिन मुझे पूरा भरोसा नहीं है कि अगर आप अपनी सेवा कार्यकर्ता को अपनी वेबसाइट शीर्ष स्तर ("/") – PaquitoSoft