RedBus ने अपनी वेबसाइट के इंटरैक्शन टू नेक्स्ट पेंट (INP) में कैसे सुधार किया और बिक्री में 7% की बढ़ोतरी कैसे हुई

आईएनपी ऑप्टिमाइज़ेशन की मदद से, redBus की बिक्री में करीब 7% की बढ़ोतरी हुई

Saurabh Rajpal
Saurabh Rajpal

वेब और उसकी सुविधाएं तेज़ी से बेहतर हो रही हैं. अब वेब पर बेहतर और सभी सुविधाओं वाले अनुभव बनाए जा सकते हैं. ये अनुभव, नेटिव ऐप्लिकेशन की सुविधाओं के बराबर ही काम के होते हैं.

JavaScript, इंटरनेट पर इंटरैक्टिविटी के लिए मुख्य ड्राइवर है. हालांकि, अगर इसका इस्तेमाल सावधानी से नहीं किया जाता है, तो इंटरैक्शन धीमे हो सकते हैं. साथ ही, उपयोगकर्ताओं को आपकी वेबसाइट रिस्पॉन्सिव नहीं लग सकती या वे यह भी सोच सकते हैं कि वह पूरी तरह से काम नहीं कर रही है. हालांकि, उपयोगकर्ता अनुभव से जुड़ी इस समस्या को हल करने के लिए, इंटरैक्शन टू नेक्स्ट पेंट (आईएनपी) मेट्रिक बनाई गई है.

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

भारत में बस बुकिंग और टिकट बेचने वाली वेबसाइट redBus ने अपनी वेबसाइट के आईएनपी को बेहतर बनाने के लिए काफ़ी मेहनत की. ऐसा तब भी किया गया, जब इसे एक्सपेरिमेंट के तौर पर इस्तेमाल की जा रही मेट्रिक माना जाता था. अपनी कोशिशों के नतीजे के तौर पर, उन्हें बिक्री में 7% की बढ़ोतरी हुई. इससे एक बार फिर यह साबित हुआ कि वेबसाइट की परफ़ॉर्मेंस और कारोबार की परफ़ॉर्मेंस के बीच का संबंध कितना अहम है. redBus ने अपनी वेबसाइट के INP को बेहतर बनाने के लिए, ये काम किए.

मुख्य लक्ष्य

redBus ने अपनी वेबसाइट के आईएनपी को ऑप्टिमाइज़ करने के लिए, तीन लक्ष्य तय किए थे:

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

सफ़र

redBus ने इंटरैक्शन लेटेंसी को दो तरीकों से बांटा है:

  1. क्लाइंट पर JavaScript को ब्लॉक करने की वजह से इंटरैक्शन में लगने वाला समय. जब इंटरैक्शन में ज़्यादा JavaScript का इस्तेमाल किया जाता है, तो मुख्य थ्रेड ब्लॉक हो जाता है. इससे रेंडरिंग में देरी होती है और पेज के INP पर असर पड़ता है.
  2. एपीआई कॉल की वजह से नेटवर्क में लगने वाला समय. INP, नेटवर्क गतिविधि को मेज़र नहीं करता. हालांकि, किसी रिमोट एपीआई को कॉल करने पर निर्भर इंटरैक्शन, धीमे नेटवर्क पर धीमा लग सकता है. ऐसा तब भी हो सकता है, जब अनुरोधों के जवाब में बड़ी डेटा फ़ाइलें मिलें.

redBus को शुरुआत में पूरा भरोसा था कि उनकी वेबसाइट का INP अच्छा होगा. हालांकि, 95वें पर्सेंटाइल पर इस मेट्रिक के लिए असल उपयोगकर्ता निगरानी (RUM) डेटा से एक अलग कहानी पता चली.

redBus ने INP को कैसे मेज़र किया

redBus ने Google की बनाई गई web-vitals JavaScript लाइब्रेरी का इस्तेमाल किया. इससे, कंपनी को न सिर्फ़ INP को ट्रैक करने में मदद मिली, बल्कि अपनी वेबसाइट के सभी पेजों के लिए, उपयोगकर्ता अनुभव की सभी ज़रूरी मेट्रिक को ट्रैक करने में भी मदद मिली. web-vitals JavaScript लाइब्रेरी के अलावा, redBus ने फ़्रंट एंड पर इकट्ठा किए गए INP डेटा का विश्लेषण करने के लिए, ELK का इस्तेमाल किया.

हालांकि, फ़ील्ड में अपनी वेबसाइट के आईएनपी को ट्रैक करने का तरीका, redBus के तरीके से काफ़ी अलग हो सकता है. हमारा सुझाव है कि इंटरैक्शन को ऑप्टिमाइज़ करने से पहले, फ़ील्ड में धीमे इंटरैक्शन ढूंढने का तरीका जानें. इसके बाद, अपनी वेबसाइटों के लिए आईएनपी को ट्रैक करने का सबसे सही तरीका जानें. साथ ही, लैब में उन्हें फिर से बनाने का तरीका जानें.

जब redBus के पास INP को ट्रैक करने के लिए सिस्टम हो गया, तब वे डेटा का विश्लेषण करके यह समझ पाए कि इंटरैक्टिविटी की समस्या कहां थी.

विश्लेषण के लिए INP वैल्यू की रिपोर्टिंग करने वाले ELK लॉगिंग सिस्टम का स्क्रीनशॉट.
फ़ील्ड से इकट्ठा की गई INP वैल्यू का विश्लेषण करने के लिए, redBus के इस्तेमाल किए जाने वाले लॉगिंग सिस्टम का स्क्रीनशॉट. (इस इमेज के हाई रिज़ॉल्यूशन वाले वर्शन के लिए क्लिक करें.)

उपयोग के उदाहरण

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

इसके अलावा, जब कोई उपयोगकर्ता किराये के विकल्पों को स्क्रोल करता है, तो एपीआई से अन्य किराये धीरे-धीरे लोड होते हैं. आईएनपी को मेज़र करने के तरीके में, स्क्रोलिंग को शामिल नहीं किया जाता. हालांकि, scroll इवेंट लिसनर खुद ही बहुत सारे काम शेड्यूल करता है, जिन्हें मुख्य थ्रेड पर चलाया जाना चाहिए. इस काम की वजह से, मुख्य थ्रेड पर कॉन्टेंटेशन हो रहा था. इससे इंटरैक्शन में लगने वाला समय बढ़ गया था. इस वजह से, खोज पेज पर खराब INP मिला.

स्क्रॉल करने पर, एपीआई से अतिरिक्त किराये लोड करने के लिए, धीरे-धीरे लोड होने की सुविधा का इस्तेमाल किया जाता है. (इस वीडियो के हाई रिज़ॉल्यूशन वाले वर्शन के लिए क्लिक करें.)

redBus ने खोज पेज के लिए आईएनपी को कैसे ऑप्टिमाइज़ किया

खोज पेज के आईएनपी को बेहतर बनाने के लिए, redBus ने कई ऑप्टिमाइज़ेशन किए:

  • किसी तय समयावधि में इवेंट कॉलबैक के ट्रिगर होने की संख्या को कम करने के लिए, scroll इवेंट हैंडलर को डबाउन किया गया. scroll इवेंट कॉलबैक की फ़्रीक्वेंसी कम करके, मुख्य थ्रेड को खोज पेज पर उपयोगकर्ता के इंटरैक्शन का ज़्यादा तेज़ी से जवाब देने में मदद मिली.
  • requestAnimationFrame कॉलबैक का इस्तेमाल करके, रेंडरिंग के काम को प्राथमिकता दी गई. requestAnimationFrame, ब्राउज़र को बताता है कि कॉलबैक में किया गया काम, अगले फ़्रेम से पहले पूरा हो जाना चाहिए.
Chrome DevTools में परफ़ॉर्मेंस पैनल का स्क्रीनशॉट, जिसमें redBus की वेबसाइट पर स्क्रोल इवेंट कॉलबैक ट्रिगर होते हुए दिख रहे हैं. इन्हें डीबाउन्स नहीं किया गया है. इस वजह से, मुख्य थ्रेड ब्लॉक हो जाता है.
पहले: इवेंट कॉलबैक पर डिबाउन्स लागू किए बिना स्क्रोल हैंडलर ट्रिगर होना. मुख्य थ्रेड पर, ब्लॉक करने वाले कई टास्क मौजूद हैं. इनकी वजह से, इंटरैक्शन में देरी होगी.
Chrome DevTools में परफ़ॉर्मेंस पैनल का स्क्रीनशॉट, जिसमें redBus की वेबसाइट को स्क्रोल करने पर होने वाले इवेंट कॉलबैक को दिखाया गया है. इन्हें डीबाउन्स किया गया है. इस वजह से, मुख्य थ्रेड कम ब्लॉक होता है, क्योंकि स्क्रोल इवेंट हैंडलर बहुत कम बार ट्रिगर होते हैं.
इसके बाद: डिबाउन्स लागू होने के साथ स्क्रोल हैंडलर ट्रिगर हो रहे हैं. स्क्रोल इवेंट कॉलबैक कम बार फ़ायर होते हैं. इससे मुख्य थ्रेड को उपयोगकर्ता इंटरैक्शन का जवाब देने के ज़्यादा अवसर मिलते हैं.

इसके अलावा, खोज के नतीजों के पेज को और भी बेहतर बनाने के लिए, ये बदलाव किए गए हैं:

  • खोज के नतीजों वाले पेज पर, आखिरी से पहले वाले कार्ड पर नतीजों के नए बैच फ़ेच किए गए थे. इससे, उपयोगकर्ता अनुभव और विज़ुअल की परफ़ॉर्मेंस को बेहतर बनाने के लिए, लेज़ी लोडिंग को पहले ट्रिगर किया जा सकता है.
  • लेज़ी लोडिंग के दौरान, हर नेटवर्क कॉल पर कम नतीजे फ़ेच किए गए. फ़ेच को 30 से घटाकर 10 नतीजों पर सेट करने से, आईएनपी रेंज में 870 से 900 की जगह 350 से 370 की कमी आई.
स्क्रॉल करने पर, एपीआई से अतिरिक्त किराये लोड करने के लिए, धीरे-धीरे लोड होने की सुविधा का इस्तेमाल किया जाता है. (इस वीडियो के हाई रिज़ॉल्यूशन वाले वर्शन के लिए क्लिक करें.)

इन बदलावों से, खोज पेज का आईएनपी काफ़ी बेहतर हो गया. हालांकि, अब भी यह समस्या थी कि खोज पेज के इनपुट फ़ील्ड पर change इवेंट, यूज़र इंटरफ़ेस को अपडेट करने के लिए, ज़्यादा समय लेने वाले रिड्यूसर फ़ंक्शन को कॉल करता था. इस वजह से, यूज़र इंटरफ़ेस को बार-बार रेंडर करना पड़ता था. इससे पेज के आईएनपी पर असर पड़ता था.

जब उपयोगकर्ता किसी इनपुट फ़ील्ड में टाइप करता है, तब कंसोल में रिपोर्ट की गई आईएनपी वैल्यू. लैब सेटिंग में, आईएनपी की वैल्यू 344 मिली, जो "बेहतर बनाने की ज़रूरत है" थ्रेशोल्ड में आती है. (इस वीडियो के हाई रिज़ॉल्यूशन वाले वर्शन के लिए क्लिक करें.)

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

इनपुट फ़ील्ड में बदलाव होने पर, रिड्यूसर को कम बार कॉल करने की वजह से आईएनपी बेहतर हुआ. (इस वीडियो के हाई रिज़ॉल्यूशन वाले वर्शन के लिए क्लिक करें.)

इस बदलाव की वजह से, पेज का आईएनपी 72% तक बेहतर हो गया. इससे, उपयोगकर्ताओं को तेज़ी से और आसानी से अनुभव मिलता है. इस वजह से, उपयोगकर्ताओं के जुड़ाव की संभावना बढ़ जाती है.

कारोबार पर असर

कारोबार की परफ़ॉर्मेंस और पेज की परफ़ॉर्मेंस के बीच का संबंध सभी को पता है. हालांकि, INP, वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने वाली अन्य मेट्रिक की तुलना में अपेक्षाकृत नई मेट्रिक है, लेकिन redBus ने उपयोगकर्ता के हिसाब से बनाई गई इस अहम परफ़ॉर्मेंस मेट्रिक को बेहतर बनाने पर फ़ोकस करके, कारोबार के बेहतर नतीजे देखे. इससे बिक्री में कुल 7% की बढ़ोतरी हुई.

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