טעינת אתר יכולה להיות חוויה שונה מאוד בהתאם לתנאי הרשת. בדרך כלל הכול פועל בצורה חלקה כשאתם מחוברים לרשת מהירה, אבל כשאתם בדרכים עם חבילת גלישה מוגבלת וחיבור לא יציב, או כשאתם תקועים עם מחשב נייד בבית קפה עם Wi-Fi איטי, הסיפור שונה.
אחת הדרכים להתמודד עם הבעיה הזו היא להתאים את הנכסים שמוצגים למשתמשים על סמך איכות החיבור שלהם. עכשיו אפשר לעשות את זה באמצעות Network Information API, שמאפשר לאפליקציות אינטרנט לגשת למידע על הרשת של המשתמש.
שימוש
יש הרבה דרכים שבהן אפשר להשתמש במידע על הרשת כדי לשפר את חוויית המשתמש:
- מעבר בין הצגת תוכן באיכות HD לבין הצגת תוכן באיכות SD בהתאם לרשת של המשתמש.
- מחליטים אם לטעון מראש משאבים.
- דחיית העלאות והורדות כשהמשתמשים מחוברים לחיבור איטי.
- אם איכות הרשת לא מספיק טובה כדי לטעון את האפליקציה ולהשתמש בתכונות שלה, צריך להפעיל את מצב אופליין.
- להזהיר משתמשים שביצוע פעולה מסוימת (לדוגמה, צפייה בסרטון) ברשת סלולרית עלול לעלות להם כסף.
- אפשר להשתמש בו בניתוח הנתונים כדי לאסוף נתונים על איכות הרשת של המשתמשים.
הרבה אפליקציות כבר עושות משהו דומה. לדוגמה, ב-YouTube, ב-Netflix וברוב שירותי הווידאו (או שיחות הווידאו) האחרים, הרזולוציה מותאמת אוטומטית במהלך הסטרימינג. בזמן הטעינה של Gmail, המשתמשים מקבלים קישור לטעינת HTML בסיסי (לחיבורים איטיים).

איך זה עובד
אובייקט navigator.connection
מכיל מידע על החיבור של לקוח. המאפיינים שלו מוסברים בטבלה שלמטה.
נכס | הסבר |
---|---|
downlink |
רוחב הפס המשוער במגה-ביט לשנייה. |
effectiveType |
הסוג האפקטיבי של החיבור, עם הערכים האפשריים 'slow-2g' , '2g' , '3g' או '4g' (כולל 4G ומעלה). הערך נקבע על סמך השילוב של זמן הלוך ושוב ומהירות ההורדה. לדוגמה, מהירות הורדה מהירה בשילוב עם זמן אחזור גבוה יניבו ערך effectiveType נמוך יותר בגלל זמן האחזור. |
onchange |
פונקציית handler של אירוע שמופעלת כשפרטי החיבור משתנים. |
rtt |
זמן האחזור המשוער של החיבור הלוך ושוב באלפיות השנייה. |
saveData |
ערך בוליאני שמגדיר אם המשתמש ביקש להפעיל מצב של צריכת נתונים מופחתת. |
כך זה נראה כשמריצים את הפקודה במסוף של הדפדפן:
הערכים של effectiveType
זמינים גם דרך Client Hints ומאפשרים לכם להעביר לשרתים את סוג החיבור של הדפדפן.
ה-onchange
event listener מאפשר לכם להתאים את עצמכם באופן דינמי לשינויים באיכות הרשת. אם דחיתם העלאות או הורדות בגלל תנאי רשת גרועים, תוכלו להסתמך על מאזין האירועים כדי להפעיל מחדש את ההעברה כשהוא מזהה תנאי רשת טובים יותר. אפשר להשתמש בו גם כדי להודיע למשתמשים כשאיכות הרשת משתנה. לדוגמה, אם הם איבדו את אות ה-Wi-Fi והועברו לרשת סלולרית, זה יכול למנוע העברות נתונים לא מכוונות (וחיובים 💸).
משתמשים ב-event listener של onchange
כמו בכל event listener אחר:
navigator.connection.addEventListener('change', doSomethingOnChange);
סיכום
היתרונות הפוטנציאליים של Network Information API הם משמעותיים, במיוחד למשתמשים ברשתות איטיות ולאפליקציות שדורשות רוחב פס גדול. והכי חשוב, אפשר להשתמש בו כטכניקה לשיפור הדרגתי.