Adaptacyjne wyświetlanie na podstawie jakości sieci

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.

Obsługa przeglądarek

  • Chrome: 61.
  • Edge: 79.
  • Firefox: nieobsługiwane.
  • Safari: nieobsługiwane.

Źródło

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ń)”.

link do załadowania podstawowej wersji HTML Gmaila, gdy użytkownicy mają wolne połączenie;

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:

Konsole Narzędzi deweloperskich w Chrome z wartościami właściwości obiektu navigator.connection

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.