الطريقة التي حسّنت بها شركة Mercado Libre "مؤشرات أداء الويب" (TBT/FID)

تحسين التفاعل في صفحات تفاصيل المنتجات لخفض "معدّل مهلة الاستجابة لأوّل إدخال" المحتمل إلى أقصى حدّ بنسبة% 90 في Lighthouse وتحسين "معدّل مهلة الاستجابة لأوّل إدخال" بنسبة% 9 في "تقرير تجربة مستخدِمي Chrome"

Carlos Aranha
Carlos Aranha
Joan Baca
Joan Baca

Mercado Libre هي أكبر منظومة متكاملة للتجارة الإلكترونية والدفع في أمريكا اللاتينية. ويتواجد التطبيق في 18 بلدًا، وهو أحد كبار بائعي التطبيقات في البرازيل والمكسيك والأرجنتين (استنادًا إلى عدد الزوّار الفرديين و مرّات الاطّلاع على الصفحة).

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

تلخّص هذه المقالة العمل الذي أجراه Guille Paz وPablo Carminatti وOleh Burkhay من فريق هندسة الواجهة الأمامية في Mercado Libre لتحسين أحد مؤشرات Core Web Vitals: First Input Delay (FID) ووكيله التجريبي، Total Blocking Time (TBT).

90%

خفض الحد الأقصى المحتمل من تأخُّر الإدخال الأول (FID) في Lighthouse

زيادة بنسبة %9

المزيد من المستخدِمين الذين يصنّفون وقت الاستجابة للتفاعل على أنّه "سريع" في CrUX

المهام الطويلة ومُهلة الاستجابة الأولى وإجمالي وقت الحظر

يمكن أن يؤدي تشغيل رمز JavaScript مُكلّف إلى مهام تستغرق وقتًا طويلاً، وهي المهام التي تستغرق أكثر من 50 ملي ثانية في سلسلة المهام الرئيسية للمتصفح.

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

لتقديم تجربة جيدة للمستخدم، يجب أن تسعى المواقع الإلكترونية إلى أن تكون مهلة الاستجابة لأوّل إدخال أقل من 100 ملي ثانية: تكون قيم fid الجيدة 2.5 ثانية، والقيم السيئة تزيد عن 4.0 ثوانٍ، وأي قيمة بينهما بحاجة إلى تحسين.

على الرغم من أنّ موقع Mercado Libre الإلكتروني كان يحقّق أداءً جيدًا في معظم الأقسام، تبيّن له في تقرير تجربت المستخدِم على Chrome أنّ FID الخاص بصفحات تفاصيل المنتجات كان ضعيفًا. استنادًا إلى هذه المعلومات، قرّرت الشركة التركيز على تحسين التفاعل مع صفحات المنتجات في الموقع الإلكتروني.

إصداران للأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي من صفحة تفاصيل منتج على Mercado Libre
إصداران متوافقان مع الأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي لصفحة تفاصيل منتج على Mercado Libre

تسمح هذه الصفحات للمستخدم بإجراء تفاعلات معقّدة، لذا كان الهدف هو تحسين التفاعل بدون التدخل في الوظائف القيّمة.

قياس التفاعل مع صفحات تفاصيل المنتجات

تتطلّب FID مستخدمًا حقيقيًا، وبالتالي لا يمكن قياسها في المختبر. ومع ذلك، يمكن قياس مقياس إجمالي وقت الحظر (TBT) في المختبر، ويرتبط بشكل جيد بمقياس مهلة الاستجابة لأوّل إدخال (FID) في المجال، ويرصد أيضًا المشاكل التي تؤثّر في التفاعل.

في التتبُّع التالي، على سبيل المثال، على الرغم من أنّ الوقت الإجمالي الذي تمّ استخدامه في تنفيذ المهام على سلسلة المحادثات الرئيسية هو 560 ملي ثانية، إلا أنّ 345 ملي ثانية فقط من هذا الوقت تُعتبر الوقت الإجمالي للحظر (مجموع الأجزاء التي تزيد عن 50 ملي ثانية من كل مهمة):

مخطط زمني للمهام في سلسلة المحادثات الرئيسية يعرض وقت الحظر

استخدمت Mercado Libre مقياس TBT كمقياس بديل في المختبر لقياس التفاعل في صفحات تفاصيل المنتجات وتحسينه في الواقع.

في ما يلي المنهج العام الذي اتّبعوه:

استخدام WebPageTest لعرض المهام الطويلة بيانيًا

‫WebPageTest (WPT) هي أداة لقياس أداء الويب تتيح لك إجراء اختبارات على أجهزة حقيقية في مواقع جغرافية مختلفة حول العالم.

استخدمت Mercado Libre WPT لإعادة إنتاج تجربة المستخدمين من خلال اختيار نوع جهاز و موقع جغرافي مشابهَين للمستخدمين الفعليين. على وجه التحديد، اختارت الشركة جهاز Moto 4G وDulles، Virginia، لأنّها أرادت تقريب تجربة مستخدمي Mercado Libre في المكسيك. من خلال مراقبة عرض سلسلة التعليمات الرئيسية في WPT، اكتشفت Mercado Libre أنّ هناك عدة مهام متعاقبة مديدة تحظر سلسلة التعليمات الرئيسية لمدة ثانيتَين:

عرض سلسلة المحادثات الرئيسية في صفحات تفاصيل المنتجات على Mercado Libre
عرض سلسلة المحادثات الرئيسية لصفحات تفاصيل المنتجات في Mercado Libre

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

عرض مُتدفّق لصفحات تفاصيل المنتجات
عرض مُتدفّق لصفحات تفاصيل المنتجات في Mercado Libre

استخدام Lighthouse لتحديد الحد الأقصى المحتمل من تأخُّر الإدخال الأول (FID)

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

عند تشغيل Lighthouse على صفحات تفاصيل المنتجات، اكتشف فريق Mercado Libre أنّ Max Potential FID هو المقياس الوحيد الذي تم وضع علامة عليه باللون الأحمر، وذلك بقيمة 1710 ملي ثانية.

مقاييس Lighthouse في تقرير PSI لصفحات تفاصيل المنتجات في Mercado Libre

استنادًا إلى ذلك، وضعت Mercado Libre هدفًا لتحسين نتيجة "معدّل عرض الإعلانات المتأخرة إلى أقصى حدّ" في أداة اختبار برمجي مثل Lighthouse وWebPageTest، بافتراض أنّ هذه التحسينات ستؤثّر في مستخدميها الفعليين، وبالتالي ستظهر في أدوات مراقبة المستخدِمين الفعليين، مثل "تقرير تجربة المستخدِم في Chrome".

تحسين المهام الطويلة

التكرار الأول

استنادًا إلى تتبُّع سلسلة المهام الرئيسية، حدّدت Mercado Libre هدفًا لتحسين المكوّنَين اللذَين كانا يشغّلان رمزًا برمجيًا ذا تكلفة عالية.

بدأوا بتحسين أداء وحدة التتبّع الداخلية. كانت هذه الوحدة تتضمّن مهمة تستهلك موارد وحدة المعالجة المركزية بشكل كبير، ولكنها لم تكن مهمة ضرورية لعمل الوحدة، وبالتالي يمكن إزالتها بأمان. وقد أدّى ذلك إلى تقليل JavaScript بنسبة% 2 في الموقع الإلكتروني بأكمله.

بعد ذلك، بدأ الفريق العمل على تحسين حجم الحِزمة العام:

استخدمت Mercado Libre أداة webpack-bundle-analyzer لرصد فرص التحسين التالية:

  • في البداية، كان يتطلّب التطبيق وحدة Lodash الكاملة. تم استبدال ذلك باستخدام طلب لكل طريقة لتحميل مجموعة فرعية فقط من Lodash بدلاً من المكتبة بأكملها، ويتم استخدامه مع lodash-webpack-plugin لتصغير Lodash بشكلٍ أكبر.

وطبّقت الشركة أيضًا تحسينات Babel التالية:

  • استخدام @babel/plugin-transform-runtime لإعادة استخدام أدوات Babel المساعدة في جميع أنحاء الرمز البرمجي وتقليل حجم الحزمة بشكل كبير
  • استخدام babel-plugin-search-and-replace لاستبدال الرموز في وقت الإنشاء، من أجل إزالة ملف إعدادات كبير داخل التحميل المُجمَّع الرئيسي
  • إضافة babel-plugin-transform-react-remove-prop-types لتوفير بعض البايتات الإضافية من خلال إزالة أنواع العناصر

نتيجةً لهذه التحسينات، تم تقليل حجم الحِزمة بنسبة%16 تقريبًا.

قياس التأثير

أدّت التغييرات إلى تقليل مدة المهام الطويلة المتتالية في Mercado Libre من ثانيتَين إلى ثانية واحدة:

عرض سلسلة المحادثات الرئيسية لصفحات تفاصيل المنتجات في Mercado Libre بعد الجولة الأولى من التحسينات
في أعلى العرض المعروض بدون انقطاع في WPT، يظهر شريط أحمر طويل (في صف الصفحة تفاعلية) بين الثانية 3 و5. في العرض المعروض من الأسفل إلى الأعلى، تم تقسيم الشريط إلى أجزاء أصغر، ما يشغل الخيط الرئيسي لفترات زمنية أقصر.

أظهر Lighthouse انخفاضًا بنسبة% 57 في الحد الأقصى المحتمَل لمهلة الاستجابة لأوّل إدخال:

مقاييس Lighthouse في تقرير PSI لصفحات تفاصيل المنتجات في Mercado Libre بعد الجولة الأولى من التحسينات

التكرار الثاني

واصل الفريق البحث في المهام الطويلة للعثور على تحسينات لاحقة.

عرض تفصيلي لعرض سلسلة المحادثات الرئيسية في صفحات تفاصيل المنتجات على Mercado Libre بعد الجولة الأولى من التحسينات
ساعد مخطّط العرض المعروض بدون صورة Mercado Libre في تحديد المكتبات التي كانت تستخدم سلسلة المهام الرئيسية بشكل كبير (صف سلسلة مهام المتصفح الرئيسية)، ويوضّح صف الصفحة تفاعلية بوضوح أنّ نشاط سلسلة المهام الرئيسية هذا يمنع التفاعل.

استنادًا إلى هذه المعلومات، قرّرت الشركة تنفيذ التغييرات التالية:

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

قياس التأثير

أظهر تتبع WebPageTest الناتج أجزاءً أصغر من تنفيذ JavaScript:

عرض سلسلة المحادثات الرئيسية لصفحات تفاصيل المنتجات في Mercado Libre بعد الجولة الثانية من التحسينات

وتم خفض وقت الحد الأقصى المحتمل من تأخُّر الإدخال الأول (FID) في Lighthouse بنسبة ‎60%إضافية:

مقاييس Lighthouse في تقرير PSI لصفحات تفاصيل المنتجات في Mercado Libre بعد الجولة الأولى من التحسينات

عرض مستوى التقدّم للمستخدمين الفعليين

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

يوفّر تقرير تجرب مستخدمي Chrome مقاييس لتقييم تجربتهم وفقًا لتجربة مستخدمي Chrome في الوجهات الرائجة على الويب. يمكن الحصول على البيانات من التقرير من خلال تنفيذ طلبات بحث في BigQuery أو PageSpeedInsights أو واجهة برمجة التطبيقات CrUX.

لوحة بيانات Chrome User Experience (CrUX) هي طريقة سهلة لعرض مستوى تقدّم المقاييس الأساسية:

.
مستوى تقدّم مقياس "مهلة الاستجابة الأولى" في Mercado Libre بين كانون الثاني (يناير) 2020 ونيسان (أبريل) 2020. قبل مشروع التحسين، كان% 82 من المستخدِمين يعتقدون أنّ قيمة FID سريعة (أقل من 100 ملي ثانية). بعد ذلك، اعتبر أكثر من% 91 من المستخدمين أنّ المقياس سريع.

الخطوات التالية

لا تنتهي مهمة تحسين أداء الويب أبدًا، وتدرك Mercado Libre القيمة التي تحقّقها هذه التحسينات للمستخدمين. وفي الوقت الذي يواصلون فيه تطبيق العديد من التحسينات على الصعيدين الموقع الإلكتروني والصفحات التي تعرض بيانات المنتجات، بما في ذلك التحميل المُسبَق وتحسينات الصور وغيرها، يواصلون إضافة تحسينات على صفحات بيانات المنتجات لتقليل إجمالي وقت الحظر (TBT) ومؤشر FID بشكلٍ أكبر. وتشمل هذه التحسينات ما يلي:

  • تكرار حلّ تقسيم الرموز البرمجية
  • تحسين تنفيذ النصوص البرمجية التابعة لجهات خارجية
  • تحسينات مستمرة في تجميع مواد العرض على مستوى أداة التجميع (webpack)

تمتلك Mercado Libre نظرة شاملة على الأداء، لذا في الوقت الذي تواصل فيه تحسين التفاعل في الموقع الإلكتروني، بدأت أيضًا في تقييم فرص التحسين في المقياسَين الآخرين الحاليَين من مؤشرات Core Web Vitals: سرعة عرض أكبر محتوى مرئي (LCP) ومتغيّرات التصميم التراكمية (CLS).