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

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

Bhuvaneswaran Mohan
Bhuvaneswaran Mohan
Saurabh Rajpal
Saurabh Rajpal

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

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

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

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

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

النتائج

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

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

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

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

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

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

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

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

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

حلّ المشاكل

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

أدّت هذه التغييرات إلى انخفاض بنسبة% 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 على مراجعة هذه الدراسة وتقديم المساعدة في نشرها.