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