قصة نجاح شركة Disney+ Hotstar في زيادة عدد مشاهدات البطاقات الأسبوعية بنسبة% 100 على أجهزة غرفة المعيشة من خلال خفض INP بنسبة %61

إنّ تحسين مدى استجابة الصفحة لتفاعلات المستخدم (INP) على أجهزة التلفزيون الذكي وأجهزة الاستقبال الرقمية يشكّل تحديات أكثر بكثير من تلك التي تواجه المتصفّحات المتوافقة مع أجهزة الكمبيوتر المكتبي، بسبب القيود المفروضة على الدعم المحدود لواجهة برمجة التطبيقات ومواصفات النظام المتواضعة. سوف تتعرفون في دراسة الحالة هذه على الطريقة التي تمكّن بها Disney+ Hotstar في التغلّب على هذه العقبات بنجاح وحققت بالتالي فوائد تجارية كبيرة.

Bhuvaneswaran Mohan
Bhuvaneswaran Mohan
Saurabh Rajpal
Saurabh Rajpal

مع زيادة معدل استخدام أجهزة غرفة المعيشة، أدركت Disney+ Hotstar أنّ توفير تجربة تصفّح سلسة في تطبيقاتها لأجهزة التلفزيون الذكية وأجهزة الاستقبال الرقمية هو أحد متطلبات العمل المهمة. ويصعّب إصلاح مقياس INP على هذه الأجهزة أنّ أي طراز تلفزيون معيّن قد يستخدم إصدارات قديمة جدًا من المتصفّح. على سبيل المثال، يستخدم تلفزيون LG لعام 2020 الإصدار Chrome 68 الذي تم إطلاقه في عام 2018. يمكن تصنيف بعض هذه الأجهزة على أنها أجهزة منخفضة المستوى أيضًا، مما يعني أنها لا تستطيع الاستجابة للتفاعلات بنفس سرعة الأجهزة اللوحية والكمبيوتر المحمول الرئيسية.

يقارن الشكل التالي مقدار الوقت المستغرق في تحميل صفحة، بين جهاز كمبيوتر محمول تم خفض بطء وحدة المعالجة المركزية به بمقدار ست مرات عند تطبيقها في أدوات مطوّري البرامج في Chrome والتلفزيون الذكي. يتّضح مما سبق أنّ الكمبيوتر المحمول لا يزال أسرع بكثير من التلفزيون الذكي الذي تم تصنيعه مؤخرًا.

لقطة شاشة للمحلل على الأداء في "أدوات مطوري البرامج في Chrome" يوضّح أداء التحميل في تطبيق Disney+ HotStar على كمبيوتر محمول يتوفّر مقياس مخصّص باسم PAGE_RENDER_TIME بعد 1.39 ثانية.
الملف الشخصي (وقت عرض الصفحة 1.3 ثانية) من كمبيوتر محمول مع بطء وحدة المعالجة المركزية (CPU) بمقدار 6 أضعاف، وذلك لمحاكاة إعداد متصفّح التلفزيون PAGE_RENDER_TIME هو مقياس مخصّص يُستخدم لتسجيل الوقت المُستغرَق بين عرض العنصر الأول من الصفحة واكتمال تحليل HTML.
لقطة شاشة للمحلل على الأداء في "أدوات مطوري البرامج في Chrome" يوضّح أداء التحميل في تطبيق Disney+ HotStar على جهاز تلفزيون ذكي فعلي يتوفّر مقياس مخصّص باسم PAGE_RENDER_TIME بعد 6.47 ثانية.
الملف الشخصي (عرض صفحة تبلغ 6.47 ثانية) من تلفزيون فعلي باستخدام تصحيح الأخطاء عن بُعد باستخدام تطبيق تلفزيون يتم تشغيله في Chrome

على الرغم من أنّ هذه الاختبارات أظهرت بيانات المختبر، بدأت Disney+ Hotstar في جمع البيانات الفعلية حول مدى استجابة الصفحة لتفاعلات المستخدم (INP) من مستخدمي التطبيق الفعليين باستخدام مكتبة صفحات الويب، ولاحظ أنّ% 75 من مستخدمي التطبيق قد لاحظوا مقياس INP بقيمة 675 مللي ثانية في هذا المجال، ما يُعتبر تجربة "سيئة" وفقًا لحدود مقياس INP.

تتناول دراسة الحالة هذه كيف حسّنت Disney+ Hotstar سرعة الاستجابة في تطبيقات البثّ، لا سيما على الأجهزة المنخفضة المواصفات. وحقّقت الشركة تحسّنًا بنسبة% 61 من خلال خفض قيم مقياس INP إلى 272 مللي ثانية، وهي لا تزال أعلى من الحدّ الأدنى "الجيد" الذي يُنصح به وهو 200 مللي ثانية، مع تحسّن كبير في هذا المستوى.

النتائج

استخدمت Disney+ Hotstar التطبيق في قياس أداء التطبيق باستخدام طريقة onINP من نموذج تحديد المصدر في مكتبة Web-vitals. خلال المرحلة الأولى، حدثت تحديات مختلفة، خاصةً في تحديد العنصر المستهدف الدقيق. وقد ظهرت هذه المشكلة لأنّ جميع المراجع التي تشير إلى النص الأساسي تعود إلى مكتبة تنقّل مكانية تابعة لجهة خارجية تم استخدامها مع بعض التخصيصات في تطبيق Disney+ Hotstar. تستمع هذه المكتبة فقط إلى الأحداث في نص المستند، وبالتالي تحدِّد العنصر الذي يتم التركيز عليه، وتتوقّع التركيز التالي استنادًا إلى ضغطات المفاتيح عن بُعد.

بدأت Disney+ Hotstar بحلّ مشكلة الإحالة أولاً للتعرّف على التفاعلات المسؤولة عن القيم العالية لمقياس INP (مدى استجابة الصفحة لتفاعلات المستخدم) بشكل صحيح. ولهذا السبب، سجّلت Disney+ Hotstar السمة focusKey المتوفّرة حاليًا في مكتبة التنقّل المكاني للعنصر الذي يتم التركيز عليه حاليًا، بالإضافة إلى خريطة لجميع العناصر التي يمكن التركيز عليها على الصفحة، وهي تشبه استهداف التفاعل المتوفّر في إصدار تحديد مصدر الحيوية على الويب.

لقطة شاشة لقائمة من العناصر وفقًا لسمة faceKey مع وقت استجابة التفاعل لكل منها
يتم الآن جلب focusKey مع المسار إلى العنصر الذي يشغّله.

بعد توفّر عمليات القياس والإحالة المناسبة، أظهرت نتائج البيانات الميدانية التفاعلات التالية باعتبارها الأكثر إشكالية في ما يتعلق بمقياس "مدى استجابة الصفحة لتفاعلات المستخدم" (INP):

  1. التنقّل في لوحة العرض الدوّارة الأفقية
  2. التنقّل في لوحة العرض الدوّارة العمودية
  3. التفاعلات أثناء التحميل الأولي للصفحة
لقطة شاشة للعنصر المسؤول عن التنقّل في لوحة العرض الدوّارة للدرج باستخدام مفتاح التركيز الخاص به
إدخال في لوحة البيانات يعرض المساهمة في مقياس INP من خلال التنقّل في لوحة العرض الدوّارة

بعد تحليل هذه التفاعلات مع لوحة الأداء في "أدوات مطوري البرامج في Chrome"، تم اكتشاف أنّ مكتبة التنقّل المكاني تقرأ مواضع جميع العناصر التي يمكن التركيز عليها وأنشأت شجرة جديدة. وهذه عملية مكلفة تؤدي إلى تقسيم التنسيق في كل تفاعل، مثل الانتقال من عنصر إلى آخر.

بالنسبة إلى الصفحة الرئيسية، تم إنشاء شجرة من خلال مكتبة التنقل المكاني على النحو التالي:

مثال على شجرة تم إنشاؤها من خلال "مكتبة التنقّل المكاني" وأسفل الجذر، توجد عُقد حاوية شريط التنقل وحاويات الحاوية. على وجه الخصوص، تحتوي عقدة حاوية العلبة على ثلاث عُقد بطاقة، تحتوي كل منها على العديد من العقد الفرعية التي تساهم في حجم DOM الكبير.
شجرة التنقّل المكاني السابقة للصفحة الرئيسية.

وهذا يعني أنه إذا عرض التطبيق 10 درجًا، وكان كل حاوية تحتوي على 7 بطاقات، فسيكون هناك 70 عنصرًا يمكن التركيز عليه لحاوية الحاوية، بما في ذلك عناصر التنقل. هذا عدد كبير من العناصر التفاعلية. تم أيضًا استخدام مكتبة لوحة عرض دوّارة تابعة لجهة خارجية، يمكن من خلالها الاطّلاع على أبعاد كل بطاقة أثناء التنقّل الأفقي لترجمة الحاوية، ما يزيد من وقت استجابة التفاعل.

حلّ المشاكل

كانت هناك العديد من المشكلات المختلفة التي كان يجب معالجتها جميعًا بشكل منفصل لحل مشكلات الاستجابة للتطبيق بشكل عام.

تحسينات على التنقّل في الدرج الأفقي

أنشأت Disney+ Hotstar مكتبة خاصة بها للوحة العرض الدوّارة، وهذه المكتبة لا تؤدي إلى إيقاف التنسيق باستخدام الصور المتحركة المُركّبة وقراءة الأبعاد مرة واحدة لكل شريط، بدلاً من قراءة السمات مرة واحدة لكل بطاقة.

يركز التنقل المكاني فقط على جذر العرض الدوار، وللمزيد من التنقل الأفقي، تأتي لوحة العرض الدوّارة المخصصة الخاصة بنا في الصورة. باستخدام هذا النهج، أزالت Disney+ Hotstar اعتماد التنقل المكاني ومكتبة لوحة العرض الدوّارة القديمة التي كانت تقرأ الأبعاد في كل عملية تنقُّل.

هذه هي الطريقة التي اتّبعتها شجرة التنقّل المكاني بعد هذه التحسينات.

مثال على شجرة محسَّنة تم إنشاؤها من خلال مكتبة التنقّل المكاني، والتي تم تحسينها بدرجة كبيرة مقارنةً بالإصدار السابق، وتحتوي على عُقد أقل بكثير.
شجرة التنقّل المكاني بعد التحسين.

الصور التالية هي مقارنة للأداء تم قياسها في لوحة الأداء في "أدوات مطوري البرامج في Chrome" قبل تنفيذ لوحة العرض الدوّارة وبعدها.

لقطة شاشة للوحة الأداء في "أدوات مطوري البرامج في Chrome" توضّح المهام التي تبدأها لوحة العرض الدوّارة التابعة لجهة خارجية، علمًا أنّ هناك العديد من المهام الطويلة التي تؤخّر التفاعل.
لوحة عرض دوّارة تابعة لجهة خارجية:
لقطة شاشة للوحة الأداء في "أدوات مطوري البرامج في Chrome" للمهام التي تبدأها لوحة العرض الدوّارة الداخلية. بالمقارنة مع لوحة العرض الدوّارة التابعة لجهات خارجية، يقل عدد المهام الطويلة جدًا، ما يتيح حدوث التفاعلات بسرعة أكبر.
لوحة عرض دوّارة داخلية:

نتيجةً لهذا الانخفاض، شهدت Disney+ Hotstar انخفاضًا كبيرًا في مقياس INP لتطبيقها في المجال. وتمكّنت أيضًا الشركة من توفير حوالي 35 كيلوبايت (مضغوطة) من خلال إزالة المكتبة التابعة لجهة خارجية. بالإضافة إلى ذلك، سمحت هذه التحسينات أيضًا لـ Disney+ Hotstar بتقليل مدة المقياس المخصّص الذي تستخدمه هذه الميزة لقياس إجمالي وقت العرض للصفحة الرئيسية، لأنّه يتم بدء تشغيل التصاميم بوتيرة أقل بسبب انخفاض عُقد التنقّل المكاني.

تمثّل هذه السمة سلسلة زمنية للمقياس المخصّص لوقت عرض الصفحة لكل من tizentv وwebos، ما انخفض بنسبة 31% و25.2% على التوالي بدءًا من الإطار الزمني بين 13 آذار (مارس) و19 آذار (مارس).
مؤشر انخفاض لأوقات عرض الصفحات حسب نظام تشغيل التلفزيون (Samsung-Tizen وWebOS-LG)

تحسينات على التنقّل في العلبة العمودية

كما حسّنت Disney+ Hotstar أداء التنقل في الدرج العمودي من خلال التحميل الكسول للأطباق بدلاً من تحميلها جميعًا في المقدمة. لذلك عند تحميل الصفحة، بدلاً من تحميل 10 مثيلات من الدرج - والتي يحتوي كل منها داخليًا على مكون لوحة عرض دوّارة ومجموعة من الصور - لا يُحمِّل التطبيق سوى الدرجتين المرئيتين في إطار العرض، بالإضافة إلى الدرج الإضافي بالأعلى والأسفل. تم أيضًا تقسيم العرض إلى مهام متعدّدة باستخدام استراتيجية الأرباح الناتجة من setTimeout()، وذلك كي يتوفّر لسلسلة التعليمات الرئيسية فرص أكبر للتعامل مع تفاعلات المستخدمين.

تمثيل بصري ذو نمط معيّن لمهام تشغيل معالِجات الأحداث وعرض التعديلات. يتم تأجيل تعديلات العرض بعد مهمة واحدة طويلة.
مَهمّة واحدة تستغرق وقتًا طويلاً ويتبعها العرض قبل تحسين الدرج العمودي.
تصور آخر لنفس النشاط مثل الشكل السابق، ولكن المهام يتم تقسيمها بسبب النتيجة، مما يسمح بظهور العرض في وقت أقرب.
يتم تقسيم المهام المتعددة بعد تحسين الدرج العمودي، مع توفُّر فرص للعرض بين المهام المقسّمة.

التفاعلات أثناء التحميل الأولي للصفحة

سيكون مقياس INP مرتفعًا للتطبيقات التي تعالج عددًا كبيرًا من النصوص البرمجية أثناء تشغيل التطبيق. وذلك لأنه يتعين على المتصفح تنزيل هذه النصوص البرمجية وتحليلها وتقييمها. وبينما يحدث ذلك، ستظل سلسلة التعليمات الرئيسية مشغولة لفترة طويلة على الأرجح، ولن تتمكن من الاستجابة بسرعة لتفاعلات المستخدمين.

أدركَت Disney+ Hotstar أنّهما يعالجان نصوصًا برمجية أكثر من اللازم أثناء بدء تشغيل التطبيق (وقت استخدام شاشة البداية) من أجل زيادة سرعة تحميل الصفحات في المستقبل. وساهم ذلك في تنفيذ مهام إضافية لتقييم النصوص البرمجية، ما قد يؤثر سلبًا في مقياس INP.

لإصلاح هذه المشكلة، درست Disney+ Hotstar تحميل معظم مواد العرض ديناميكيًا، وبذلك توفِّر الوقت أثناء بدء تشغيل التطبيق. ومع ذلك، قد يؤدي ذلك إلى زيادة أوقات التحميل لعمليات الانتقال إلى الصفحات المستقبلية، لأنّه لن يتم تحميل لغة JavaScript بشكل مسبق مع هذا التغيير. لمعالجة هذه المشكلة، طوّرت Disney+ Hotstar مكتبة داخلية لأداة التحميل المسبق لمواد العرض، تحدد الصفحة التي قد تظهر بعد ذلك في تجربة المستخدم، وستحمّل مواد العرض مسبقًا لهذه الصفحة. مثلاً:

  • عندما يكون المستخدم في صفحة تسجيل الدخول، ستعمل مكتبة أداة التحميل المسبق لمواد العرض على تحميل مواد العرض مسبقًا في صفحة اختيار الملف الشخصي.
  • في صفحة اختيار الملف الشخصي، يتم تحميل أصول الصفحة الرئيسية.
  • في الصفحة الرئيسية، يتم تحميل أصول صفحة التفاصيل.
  • أخيرًا، يتم تحميل مواد العرض الخاصة بصفحة المشاهدة على صفحة التفاصيل.

ساعد تحسين تحميل مواد العرض Disney+ Hotstar في تحقيق شيئين: تخفيض INP في التطبيق (لأنّ سلسلة التعليمات الرئيسية أصبحت الآن مجانية نسبيًا لتنفيذ تفاعلات المستخدمين) وخفض استخدام الذاكرة أيضًا على الأجهزة ذات المستوى المنخفض.

أدّت هذه التغييرات إلى انخفاض بنسبة 32% في عدد INP الوارد في التقرير كما هو موضّح في لقطة الشاشة التالية.

سلسلة زمنية لقيم INP بدءًا من 13 آب (أغسطس) و11 أيلول (سبتمبر). وخلال هذه الفترة، يظهر انخفاض بنسبة% 32 في INP.
تقليل INP لتحسينات شريط الأدوات.

تحسينات أخرى

اكتشفت Disney+ Hotstar أيضًا أنّ هناك مهامًا طويلة في بعض أحداث المستخدمين يمكن تقسيمها من خلال التركيز على سلسلة التعليمات الرئيسية بشكل متكرّر، وطوّرت أداة لإنشاء المهام تتيح للمستخدمين إلغاء المهمة في منتصف تنفيذها.

على سبيل المثال، عندما يتنقل المستخدم عبر بطاقات متعددة في الحاوية، يحدث ما يلي:

  • يتم التركيز على البطاقة التالية.
  • تتم ترجمة البطاقة إذا لزم الأمر.
  • تم تحديث ميزة "تضمين كاميرا المُحاضر".
  • يتم جلب المقطع الدعائي، في حال توفّره، ويبدأ التشغيل.
  • يتم تنشيط أحداث "إحصاءات Google" للإجراء.

إذا ركز المستخدم أثناء هذه العملية على البطاقة التالية، فلن يلزم تنفيذ بقية الخطوات. على سبيل المثال، لن تكون هناك حاجة إلى جلب المقاطع الدعائية وتهيئة المشغّل لعنوان معيّن إذا انتقل المستخدم إلى البطاقة التالية. وبالتالي، يمكن إلغاء هذه المهام لتوفير سلسلة التعليمات الرئيسية.

تتيح أداة إنشاء مهام Disney+ Hotstar استخدام وظيفة معيّنة، وعندما تظهر مهمة أخرى في منتصف المهمة، يتم إلغاء المهمة السابقة مما يوفر لنا تنفيذ المهام غير الضرورية بسرعة.

النتائج

بشكل عام، انخفض مقياس مدى استجابة الصفحة لتفاعلات المستخدم (INP) لتطبيق Disney+ Hotstar من 675 مللي ثانية إلى 272 مللي ثانية، ما يمثل تحسينات بنسبة 60% تقريبًا! بالإضافة إلى ذلك، انخفض وقت الاستجابة لتفاعل العلبة على وجه الخصوص من حوالي 400 ملّي ثانية إلى حوالي 100 مللي ثانية.

تبدأ قيم مقياس مدى استجابة الصفحة لتفاعلات المستخدم (INP) في السلسلة الزمنية من 23 آب (أغسطس) إلى 21 أيلول (سبتمبر). وقد تم تحقيق انخفاض بنسبة 61% في INP في هذا الإطار الزمني.

التأثير في النشاط التجاري: ارتفع عدد مشاهدات البطاقات أسبوعيًا من 111 إلى 226 لكل مستخدم. هذه زيادة بنسبة 100%، ما يشير إلى أن الواجهة الأسرع والأكثر استجابة تزيد احتمالية جذب المستخدمين لفترات زمنية أطول.

لقطة شاشة لسلسلة زمنية تُظهر زيادة بنسبة 100% في عدد مشاهدات البطاقات الأسبوعية على تطبيق Disney+ HotStar لكل من tizentv وwebos. ثم حدثت زيادة كبيرة بعد 4 أبريل 2004.

هذه ليست سوى البداية. وقد لم يكتفِ Disney+ Hotstar بتقديم تجربة أفضل من خلال تحسين أداء العرض والتفاعل استنادًا إلى مقياس INP، كما يتطلّع فريق الشركة إلى جعل Disney+ Hotstar تجربة استخدام سلسة للغاية للعملاء في المستقبل القريب.

نشكر "أيوش" و"أجاي" و"كيران" و"ميلان" و"ريشا" من Disney+ Hotstar لجهودهم في حل المشكلة.

شكر خاص لكل من أنكيت ماين، رئيس قسم الهندسة في Disney+ Hotstar، وراهول كريشنان بي، رئيس قسم تجربة العملاء في Disney+ Hotstar لدعم هذا العمل الإبداعي، و"جيريمي واغنر" و"جيلبرتو" و"باري بولارد" و"بريندان كيني" من Google لمراجعة دراسة الحالة هذه والمساعدة في نشرها.