العرض التكيُّفي استنادًا إلى جودة الشبكة

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

وإحدى الطرق للتعامل مع هذه المشكلة هي من خلال تعديل مواد العرض التي تعرِضها للمستخدمين، وذلك استنادًا إلى جودة اتصالهم بالإنترنت. أصبح ذلك ممكنًا الآن باستخدام واجهة برمجة التطبيقات Network Information API التي تتيح لتطبيقات الويب الوصول إلى معلومات عن شبكة المستخدم.

توافق المتصفّح

  • Chrome: 61
  • ‫Edge: 79
  • Firefox: غير متوافق
  • Safari: غير متاح.

المصدر

الاستخدام

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

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

تقوم العديد من التطبيقات بالفعل بشيء مماثل. على سبيل المثال، تضبط YouTube وNetflix ومعظم خدمات الفيديو (أو مكالمات الفيديو) الأخرى درجة الدقة تلقائيًا أثناء البث. عند تحميل Gmail، يقدّم للمستخدمين رابطًا لـ "تحميل HTML الأساسي (للاتصالات البطيئة)".

رابط لتحميل إصدار HTML الأساسي من Gmail عندما يكون الاتصال بالإنترنت بطيئًا لدى المستخدمين

آلية العمل

يحتوي العنصر navigator.connection على معلومات حول اتصال العميل. يتم شرح خصائصه في الجدول أدناه.

الموقع الشرح
downlink التقدير لمعدّل نقل البيانات بالميغابت في الثانية
effectiveType النوع الفعال للاتصال، مع القيم المحتملة 'slow-2g' أو '2g' أو '3g' أو '4g' (تغطي الجيل الرابع والإصدارات الأحدث) يتم تحديدها استنادًا إلى وقت الرحلة ذهابًا وإيابًا وسرعة التحميل. على سبيل المثال، سيؤدي ربط سرعة تنزيل سريعة بوقت استجابة مرتفع إلى انخفاض قيمة effectiveType بسبب وقت الاستجابة.
onchange معالِج أحداث يتم تشغيله عند تغيير معلومات الاتصال.
rtt وقت الاستجابة المقدَّر للاتصال ذهابًا وإيابًا بالمللي ثانية
saveData قيمة منطقية تحدِّد ما إذا كان المستخدم قد طلب وضع استخدام بيانات مخفض.

في ما يلي الشكل الذي سيظهر به هذا الإجراء عند تشغيله في وحدة تحكّم المتصفّح:

وحدة تحكّم أدوات مطوّري البرامج في Chrome تعرض قيم خصائص العنصر navigator.connection

تتوفّر قيم effectiveType أيضًا من خلال ملاحظات العميل وتسمح لك بإبلاغ الخوادم بنوع اتصال المتصفّح.

تتيح لك أداة معالجة الأحداث في onchange التكيّف بشكل ديناميكي مع التغييرات التي تطرأ على جودة الشبكة. إذا تم تأجيل عمليات التحميل أو عمليات التنزيل بسبب سوء ظروف الاتصال بالشبكة، يمكنك الاعتماد على أداة معالجة الحدث لإعادة تشغيل عملية النقل عند رصد ظروف أفضل للشبكة. ويمكنك أيضًا استخدامها لإعلام المستخدمين عند تغيُّر جودة الشبكة. على سبيل المثال، إذا فقد الجهاز إشارة Wi-Fi وأصبح مرتبطًا بشبكة جوّال، يمكن أن يمنع ذلك عمليات نقل البيانات غير المقصودة (ورسوم الربط 💸).

استخدِم أداة معالجة الحدث onchange كما تفعل مع أي أداة معالجة حدث أخرى:

navigator.connection.addEventListener('change', doSomethingOnChange);

الخاتمة

الفوائد المحتملة لواجهة برمجة تطبيقات Network Information API كبيرة، لا سيما للمستخدمين الذين يستخدمون الشبكات البطيئة والتطبيقات التي تتطلب معدل نقل بيانات كبيرًا. والأهم من ذلك، يمكن استخدامها كأسلوب تحسين تدريجي.