Wczytywanie witryny może przebiegać różnie w zależności od warunków sieci. Gdy korzystasz z szybkiej sieci, wszystko zwykle działa bez zarzutu, ale gdy jesteś w ruchu, masz ograniczony pakiet danych i niestabilne połączenie lub siedzisz w kawiarni i korzystasz z wolnego Wi-Fi, sytuacja wygląda inaczej.
Jednym ze sposobów na rozwiązanie tego problemu jest dostosowanie komponentów wyświetlanych użytkownikom na podstawie jakości ich połączenia. Jest to teraz możliwe dzięki interfejsowi Network Information API, który umożliwia aplikacjom internetowym dostęp do informacji o sieci użytkownika.
Wykorzystanie
Informacje o sieci możesz wykorzystać na wiele sposobów, aby poprawić wrażenia użytkowników:
- Przełączanie się między treściami w wysokiej i niskiej rozdzielczości w zależności od sieci użytkownika.
- Zdecyduj, czy chcesz wstępnie wczytywać zasoby.
- Opóźniaj przesyłanie i pobieranie, gdy użytkownicy mają wolne połączenie.
- Włącz tryb offline, jeśli jakość sieci jest niewystarczająca do wczytania aplikacji i korzystania z jej funkcji.
- Ostrzec użytkowników, że korzystanie z funkcji (np. oglądanie filmów) w sieci komórkowej może wiązać się z kosztami.
- Używaj go w statystykach, aby zbierać dane o jakości sieci użytkowników.
Wiele aplikacji wykonuje już podobną czynność. Na przykład YouTube, Netflix i większość innych usług wideo (lub wideokonferencyjnych) automatycznie dostosowuje rozdzielczość podczas przesyłania strumieniowego. Podczas wczytywania Gmaila użytkownicy widzą link „Wczytaj podstawowy HTML (dla wolnych połączeń)”.
Jak to działa
Obiekt navigator.connection
zawiera informacje o połączeniu klienta. Właściwości tego obiektu zostały opisane w tabeli poniżej.
Właściwość | Wyjaśnienie |
---|---|
downlink |
Szacowana przepustowość w megabitach na sekundę. |
effectiveType |
Efektywny typ połączenia z możliwymi wartościami 'slow-2g' , '2g' , '3g' lub '4g' (obejmuje 4 g i więcej). Określana na podstawie kombinacji czasu dwukierunkowego i szybkości pobierania. Na przykład szybkie łącze w połączeniu z dużym czasem oczekiwania ma niższą skuteczność obiektu z powodu czasu oczekiwania. |
onchange |
Obsługa zdarzenia, która jest wywoływana, gdy zmieniają się informacje o połączeniu. |
rtt |
Szacunkowe opóźnienie połączenia w obie strony (w milisekundach). |
saveData |
Wartość logiczna określająca, czy użytkownik zażądał trybu ograniczonego użycia danych. |
Oto jak to wygląda, gdy uruchomisz to w konsoli przeglądarki:
Wartości effectiveType
są też dostępne we wskazówkach dla klienta i umożliwiają przekazanie do serwerów informacji o typie połączenia przeglądarki.
Detektor zdarzeń onchange
umożliwia dynamiczną adaptację do zmian jakości sieci. Jeśli przesyłanie lub pobieranie zostało odroczone z powodu złego stanu sieci, możesz polegać na odbiorniku zdarzeń, który ponownie uruchomi przesyłanie, gdy wykryje lepsze warunki sieci. Możesz też używać go do informowania użytkowników o zmianach jakości sieci. Jeśli na przykład utraci on sygnał Wi-Fi i zostanie utracony do sieci komórkowej, może to zapobiec przypadkowemu przesyłaniu danych (i naliczeniu opłat 💸).
Używaj detektora zdarzeń onchange
tak samo jak każdego innego detektora zdarzeń:
navigator.connection.addEventListener('change', doSomethingOnChange);
Podsumowanie
Potencjalne korzyści interfejsu Network Information API są duże, zwłaszcza w przypadku użytkowników korzystających z powolnych sieci i aplikacji wymagających dużej przepustowości. A co najlepsze, może być stosowany jako technika stopniowego ulepszania.