बैकग्राउंड की सेवाओं को डीबग करना

Kayce Basques
Kayce Basques
Sofia Emelianova
Sofia Emelianova

Chrome DevTools का बैकग्राउंड सेवाएं सेक्शन, JavaScript API के लिए टूल का कलेक्शन है. इससे आपकी वेबसाइट, अपडेट भेज और पा सकती है. ऐसा तब भी हो सकता है, जब उपयोगकर्ता ने आपकी वेबसाइट न खोली हो. बैकग्राउंड सेवा, बैकग्राउंड प्रोसेस की तरह ही काम करती है.

बैकग्राउंड में चलने वाली सेवाएं सेक्शन की मदद से, बैकग्राउंड में चलने वाली इन सेवाओं को डीबग किया जा सकता है:

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

बैकग्राउंड सेवा के इवेंट के अलावा, DevTools ये काम भी कर सकता है:

बैकग्राउंड फ़ेच

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

  1. Background Fetch API का इस्तेमाल करने वाले पेज पर, DevTools खोलें.
  2. ऐप्लिकेशन > बैकग्राउंड सेवाएं > बैकग्राउंड फ़ेच पर जाएं. इसके बाद, रिकॉर्ड करें. रिकॉर्ड करें पर क्लिक करें.

    बैकग्राउंड फ़ेच का पैनल.

  3. अपने पेज पर, बैकग्राउंड फ़ेच करने की कुछ गतिविधि ट्रिगर करें. DevTools, इवेंट को टेबल में लॉग करता है.

    बैकग्राउंड फ़ेच पैनल में इवेंट का लॉग.

  4. टेबल के नीचे मौजूद स्पेस में, किसी इवेंट की जानकारी देखने के लिए उस पर क्लिक करें.

  5. DevTools को बंद किया जा सकता है. रिकॉर्डिंग को तीन दिनों तक चलने दिया जा सकता है. रिकॉर्डिंग रोकने के लिए, बंद करो। रोकें पर क्लिक करें.

बैकग्राउंड सिंक

Background Sync API की मदद से, ऑफ़लाइन service worker, सर्वर को डेटा भेज सकता है. ऐसा तब होता है, जब वह भरोसेमंद इंटरनेट कनेक्शन से फिर से कनेक्ट हो जाता है. DevTools के बंद होने पर भी, तीन दिनों तक बैकग्राउंड सिंक इवेंट लॉग करने के लिए:

  1. DevTools खोलें. उदाहरण के लिए, इस डेमो पेज पर.
  2. ऐप्लिकेशन > बैकग्राउंड सेवाएं > बैकग्राउंड सिंक पर जाएं. इसके बाद, रिकॉर्ड करें. रिकॉर्ड करें पर क्लिक करें.

    बैकग्राउंड सिंक करने की सुविधा वाला पैनल.

  3. डेमो पेज पर, Register background sync पर क्लिक करके, संबंधित सर्विस वर्कर को रजिस्टर करें. इसके बाद, प्रॉम्प्ट मिलने पर Allow पर क्लिक करें.

    सर्विस वर्कर का रजिस्ट्रेशन, बैकग्राउंड में सिंक करने की गतिविधि है. DevTools, इवेंट को टेबल में लॉग करता है.

    बैकग्राउंड सिंक पैनल में मौजूद इवेंट का लॉग.

  4. टेबल के नीचे मौजूद स्पेस में, किसी इवेंट की जानकारी देखने के लिए उस पर क्लिक करें.

  5. DevTools को बंद किया जा सकता है. रिकॉर्डिंग को तीन दिनों तक चलने दिया जा सकता है. रिकॉर्डिंग रोकने के लिए, बंद करो। रोकें पर क्लिक करें.

(एक्सपेरिमेंट के तौर पर उपलब्ध) बाउंस ट्रैकिंग की क्षमता को कंट्रोल करना

Chrome में बाउंस ट्रैकिंग को कम करने से जुड़े एक्सपेरिमेंट की मदद से, उन साइटों की पहचान की जा सकती है जो बाउंस ट्रैकिंग तकनीक का इस्तेमाल करके, अलग-अलग साइटों पर उपयोगकर्ताओं को ट्रैक करती हैं. साथ ही, इन साइटों की स्थिति को मिटाया जा सकता है. मैन्युअल तरीके से ट्रैकिंग को कम किया जा सकता है. साथ ही, उन साइटों की सूची देखी जा सकती है जिनके स्टेटस मिटा दिए गए थे.

ट्रैकिंग की क्षमता को कंट्रोल करने की सुविधा को लागू करने के लिए:

  1. Chrome में तीसरे पक्ष की कुकी ब्लॉक करें. तीन बिंदु वाला मेन्यू. > सेटिंग > सुरक्षा. निजता और सुरक्षा > कुकी और अन्य साइट डेटा > रेडियो बटन चुना गया. तीसरे पक्ष की कुकी ब्लॉक करें पर जाएं और इसे चालू करें.
  2. chrome://flags में, बाउंस ट्रैकिंग की क्षमता को कंट्रोल करने वाले एक्सपेरिमेंट को डेटा मिटाने की सुविधा चालू है पर सेट करें.
  3. DevTools खोलें और Application > Background services > Bounce tracking mitigations पर जाएं.
  4. किसी बाउंस लिंक पर क्लिक करें और Chrome के बाउंस को रिकॉर्ड करने के लिए 10 सेकंड तक इंतज़ार करें. समस्याएं टैब में, आपको आने वाले समय में स्थिति के मिटने के बारे में चेतावनी दी जाती है.
  5. स्टेट को तुरंत मिटाने के लिए, तुरंत मिटाएं पर क्लिक करें.

बाउंस ट्रैकिंग की क्षमता को कंट्रोल करने की सुविधा में, किसी राज्य को मिटाने की जानकारी दी गई है.

सूचनाएं

जब सर्विस वर्कर को सर्वर से पुश मैसेज मिलता है, तो वह Notifications API का इस्तेमाल करके, उपयोगकर्ता को डेटा दिखाता है. DevTools बंद होने पर भी, तीन दिनों तक सूचनाओं को लॉग करने के लिए:

  1. DevTools खोलें
  2. ऐप्लिकेशन > बैकग्राउंड सेवाएं > सूचनाएं पर जाएं. इसके बाद, रिकॉर्ड करें. रिकॉर्ड करें पर क्लिक करें.

    सूचनाएं पैनल.

  3. सूचना शेड्यूल करें पर क्लिक करें. इसके बाद, अनुरोध किए जाने पर अनुमति दें पर क्लिक करें.

  4. सूचना दिखने का इंतज़ार करें. DevTools, सूचना से जुड़े इवेंट को टेबल में लॉग करता है.

    सूचना पैनल में इवेंट का लॉग.

  5. टेबल के नीचे मौजूद स्पेस में, किसी इवेंट की जानकारी देखने के लिए उस पर क्लिक करें.

  6. DevTools को बंद किया जा सकता है. रिकॉर्डिंग को तीन दिनों तक चलने दिया जा सकता है. रिकॉर्डिंग रोकने के लिए, बंद करो। रोकें पर क्लिक करें.

अनुमान के हिसाब से लोड हुए यूआरएल

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

प्रीफ़ेच, किसी संसाधन को पहले से फ़ेच करता है. वहीं, प्रीरेंडर इससे एक कदम आगे बढ़कर, पूरे पेज को बैकग्राउंड में रेंडर करता है.

ऐप्लिकेशन > बैकग्राउंड सेवाएं > अनुमान के हिसाब से लोड हुए यूआरएल सेक्शन में जाकर, अनुमान के हिसाब से लोड हुए यूआरएल को डीबग किया जा सकता है. इस सेक्शन में तीन व्यू होते हैं:

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

इस प्रीरेंडर डेमो पेज पर, अनुमान के हिसाब से यूआरएल लोड होने की सुविधा को डीबग करने की कोशिश करें:

  1. पेज पर DevTools खोलें और Application > Background services > Speculative loads पर जाएं. अगर आपको पेज पर अनुमान के हिसाब से लोड किए गए कोई भी यूआरएल नहीं दिखते हैं, तो पेज को फिर से लोड करें.

    इस पेज पर, अनुमान के हिसाब से लोड किए गए यूआरएल. इनमें से दो यूआरएल लोड हो गए और एक लोड नहीं हो सका.

  2. डेमो का शुरुआती पेज, दो पेजों को पहले से रेंडर करता है और एक पेज को पहले से रेंडर नहीं कर पाता. सभी अनुमान देखें पर क्लिक करें.

  3. अनुमान में जाकर, फ़ेल हो गया स्टेटस वाला अनुमान चुनें. इसके बाद, सबसे नीचे मौजूद सेक्शन में जाकर, फ़ेल होने की वजह देखें.

    अनुमान के हिसाब से लोड नहीं हो सका.

    इस मामले में, प्रीरेंडरिंग नहीं हो सकी, क्योंकि वेबसाइट पर कोई /next3.html पेज नहीं है.

  4. नियम सेक्शन खोलें और सबसे नीचे मौजूद नियम सेट देखने के लिए, स्टेटस पर क्लिक करें. नियमों का सेट लिंक पर क्लिक करने से, आपको एलिमेंट पैनल पर ले जाया जाता है. साथ ही, यह दिखाया जाता है कि अनुमान लगाने का नियम कहां तय किया गया है.

    नियमों वाला सेक्शन, जिसमें नियम सेट का लिंक दिया गया है.

ज़्यादा जानकारी के लिए, स्पेकुलेशन नियमों को डीबग करना लेख पढ़ें.

पुश मैसेज की सेवा

किसी उपयोगकर्ता को पुश नोटिफ़िकेशन दिखाने के लिए, सर्विस वर्कर को सबसे पहले Push Message API का इस्तेमाल करके, सर्वर से डेटा पाना होगा. जब सर्विस वर्कर सूचना दिखाने के लिए तैयार होता है, तब वह Notifications API का इस्तेमाल करता है. DevTools बंद होने पर भी, तीन दिनों तक पुश मैसेज लॉग करने के लिए:

  1. DevTools खोलें. उदाहरण के लिए, इस डेमो पेज पर.
  2. ऐप्लिकेशन > बैकग्राउंड सेवाएं > पुश मैसेजिंग पर जाएं. इसके बाद, रिकॉर्ड करें. रिकॉर्ड करें पर क्लिक करें.

    पुश मैसेजिंग पैनल.

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

    पुश मैसेजिंग पैनल में इवेंट का लॉग.

  4. टेबल के नीचे मौजूद स्पेस में, किसी इवेंट की जानकारी देखने के लिए उस पर क्लिक करें.

  5. DevTools को बंद किया जा सकता है. रिकॉर्डिंग को तीन दिनों तक चलने दिया जा सकता है. रिकॉर्डिंग रोकने के लिए, बंद करो। रोकें पर क्लिक करें.

रिपोर्टिंग एपीआई

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

उदाहरण के लिए, मान लें कि आपकी नई साइट तीसरे पक्ष के ऐसे सॉफ़्टवेयर पर निर्भर करती है जो ज़रूरी स्क्रिप्ट लोड करने के लिए, document.write() का इस्तेमाल करता है. दुनिया भर के नए उपयोगकर्ता आपकी साइट खोलते हैं. हालांकि, हो सकता है कि उनके इंटरनेट की स्पीड उतनी न हो जितनी आपने टेस्ट की थी. आपको पता भी नहीं चलता और आपकी साइट उन लोगों के लिए काम करना बंद कर देती है. ऐसा इसलिए होता है, क्योंकि Chrome, धीमी स्पीड वाले नेटवर्क पर document.write() को रोक देता है. इसके अलावा, आपको ऐसे एपीआई पर नज़र रखनी चाहिए जो अब सेवा में नहीं हैं या जल्द ही सेवा में नहीं रहेंगे. ऐसा हो सकता है कि आपका कोडबेस इनका इस्तेमाल कर रहा हो.

Reporting API को इस तरह से डिज़ाइन किया गया है कि यह आपको बंद किए गए एपीआई कॉल, आपके पेज पर सुरक्षा से जुड़े उल्लंघनों वगैरह की निगरानी करने में मदद करता है. Reporting API की मदद से, अपने वेब ऐप्लिकेशन को मॉनिटर करना लेख में दिए गए तरीके से रिपोर्टिंग सेट अप की जा सकती है.

किसी पेज से जनरेट की गई रिपोर्ट देखने के लिए:

  1. chrome://flags/#enable-experimental-web-platform-features पर जाएं. इसके बाद, Experimental Web Platform features को Enabled पर सेट करें. इसके बाद, Chrome को रीस्टार्ट करें.
  2. DevTools खोलें और ऐप्लिकेशन > बैकग्राउंड सेवाएं > Reporting API पर जाएं.

    Reporting API में मौजूद रिपोर्ट

Reporting API टैब को तीन हिस्सों में बांटा गया है:

  • रिपोर्ट टेबल में, हर रिपोर्ट के बारे में यह जानकारी होती है:
    • यूआरएल की वजह से रिपोर्ट जनरेट हुई
    • उल्लंघन का टाइप
    • रिपोर्ट स्टेटस
    • Destination एंडपॉइंट
    • जनरेट होने का समय टाइमस्टैंप
    • रिपोर्ट बॉडी
  • रिपोर्ट बॉडी का पूर्वावलोकन सेक्शन. रिपोर्ट के मुख्य हिस्से का पूर्वावलोकन करने के लिए, रिपोर्ट की टेबल में मौजूद किसी रिपोर्ट पर क्लिक करें.
  • Reporting-Endpoints हेडर में कॉन्फ़िगर किए गए सभी एंडपॉइंट की खास जानकारी देने वाला एंडपॉइंट सेक्शन.

शिकायत की स्थिति

स्थिति कॉलम से पता चलता है कि Chrome ने रिपोर्ट भेज दी है, भेजने वाला है या नहीं भेज सका.

स्थिति ब्यौरा
Success ब्राउज़र ने रिपोर्ट भेज दी है और एंडपॉइंट ने सक्सेस कोड (200 या कोई अन्य सक्सेस रिस्पॉन्स कोड 2xx) के साथ जवाब दिया है.
Pending ब्राउज़र, रिपोर्ट भेजने की कोशिश कर रहा है.
Queued रिपोर्ट जनरेट हो गई है और ब्राउज़र इसे अभी तक नहीं भेज रहा है. इन दो मामलों में से किसी एक में, रिपोर्ट Queued के तौर पर दिखती है:
  • यह रिपोर्ट नई है और ब्राउज़र यह देखने के लिए इंतज़ार कर रहा है कि क्या और रिपोर्ट आती हैं. इसके बाद, वह इसे भेजने की कोशिश करेगा.
  • यह नई रिपोर्ट नहीं है. ब्राउज़र पहले ही इस रिपोर्ट को भेजने की कोशिश कर चुका है और ऐसा नहीं कर सका. अब वह फिर से कोशिश करने से पहले इंतज़ार कर रहा है.
MarkedForRemoval कुछ समय (Queued) तक फिर से कोशिश करने के बाद, ब्राउज़र ने रिपोर्ट भेजने की कोशिश करना बंद कर दिया है. साथ ही, वह जल्द ही इसे भेजने के लिए तैयार रिपोर्ट की सूची से हटा देगा.

रिपोर्ट कुछ समय बाद हटा दी जाती हैं. भले ही, उन्हें भेजा गया हो या नहीं.