הצגה דינמית בהתאם לאיכות הרשת

מיליקה מיהאג'ליג'ה
מיליקה מיהאג'ליג'ה

חוויה שונה מאוד של טעינת אתר עשויה להשתנות בהתאם לתנאי הרשת. בדרך כלל הכול פועל בצורה חלקה כשאתם מחוברים לרשת מהירה, אבל כשאתם בדרכים עם חבילת גלישה מוגבלת וחיבור יציב, או אם אתם תקועים עם מחשב נייד עם רשת Wi-Fi איטית בבית קפה, זה סיפור אחר.

אחת הדרכים להתמודד עם זה היא להתאים את הנכסים שיוצגו למשתמשים בהתאם לאיכות החיבור שלהם. עכשיו זה אפשרי באמצעות Network Information API שמאפשר לאפליקציות אינטרנט לגשת למידע על הרשת של המשתמש.

תמיכה בדפדפן

  • 61
  • 79
  • x
  • x

מקור

Usage

יש הרבה דרכים להשתמש בפרטי הרשת האלה כדי לשפר את חוויית המשתמש:

  • מעבר בין הצגת תוכן באיכות גבוהה ותוכן באיכות נמוכה בהתאם לרשת של המשתמש.
  • מחליטים אם לטעון מראש משאבים.
  • דחייה של העלאות והורדות כשהמשתמשים עובדים בחיבור איטי.
  • אם איכות הרשת לא מספיק טובה כדי לטעון את האפליקציה ולהשתמש בתכונות, צריך להפעיל את מצב אופליין.
  • יש להזהיר משתמשים שפעולות (למשל, צפייה בסרטון) באמצעות רשת סלולרית עלולות לעלות להם כסף.
  • אפשר להשתמש בו בניתוח נתונים כדי לאסוף נתונים על איכות הרשת של המשתמשים.

אפליקציות רבות כבר עושות משהו דומה. לדוגמה, YouTube, Netflix ורוב שירותי הווידאו (או שיחות הווידאו) האחרים ישונו אוטומטית את הרזולוציה במהלך הסטרימינג. כש-Gmail בטעינה, הוא מספק למשתמשים את הקישור ל "טעינת HTML בסיסי (לחיבורים איטיים)".

קישור לטעינת גרסת HTML בסיסי של Gmail כשהמשתמשים בחיבורים איטיים

איך זה עובד

האובייקט navigator.connection מכיל מידע על חיבור לקוח. המאפיינים שלו מוסברים בטבלה שלמטה.

מאפיין (property) הסבר
downlink הערכת רוחב הפס במגה-ביט לשנייה.
effectiveType הסוג האפקטיבי של החיבור, עם ערכים אפשריים 'slow-2g', '2g', '3g' או '4g' (כולל 4g ומעלה). נקבעת על סמך השילוב של זמן הלוך ושוב ומהירות הקישור להורדה. לדוגמה, קישור למטה מהיר בשילוב עם זמן אחזור גבוה יהיה יעיל יותר ב-effectiveType בגלל זמן האחזור.
onchange handler של אירועים שמופעל כשפרטי החיבור משתנים.
rtt זמן האחזור המשוער של החיבור הלוך ושוב באלפיות השנייה.
saveData ערך בוליאני שמגדיר אם המשתמש ביקש מצב של שימוש מופחת בנתונים.

כך זה נראה כאשר מריצים אותו במסוף הדפדפן:

מסוף כלי הפיתוח ל-Chrome שבו מוצגים ערכי המאפיינים של האובייקט navigator.Connect

הערכים של effectiveType זמינים גם דרך רמזים ללקוחות, ומאפשרים לכם לציין לשרתים את סוג החיבור של הדפדפן.

הפונקציה onchange event listener מאפשרת לך לבצע התאמה דינמית לשינויים באיכות הרשת. אם דחיתם את ההעלאה או ההורדה בגלל תנאי רשת גרועים, תוכלו להסתמך על event listener שיתחיל מחדש את ההעברה כשהוא יזהה תנאי רשת טובים יותר. אפשר להשתמש בה גם כדי להודיע למשתמשים כשאיכות הרשת משתנה. לדוגמה, אם הם אבדו את אות ה-Wi-Fi והועברו לרשת סלולרית, זה עשוי למנוע העברות מקריות של נתונים (וחיובים 💸).

משתמשים ב-event listener של onchange כמו בכל האזנה לאירוע אחר:

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

סיכום

היתרונות הפוטנציאליים של Network Information API הם גדולים, במיוחד למשתמשים באפליקציות וברשתות איטיות שדורשות רוחב פס גדול. והכי חשוב, היא יכולה לשמש כשיטה לשיפור ההתקדמות.