Das Laden einer Website kann je nach Netzwerkbedingungen sehr unterschiedlich sein. Wenn Sie mit einem schnellen Netzwerk verbunden sind, funktioniert alles reibungslos. Wenn Sie jedoch unterwegs sind, nur ein begrenztes Datenvolumen haben und eine mäßige Verbindung nutzen oder mit einem Laptop das langsame WLAN eines Cafés nutzen, sieht das ganz anders aus.
Eine Möglichkeit, damit umzugehen, besteht darin, die Assets, die du Nutzern auslieferst, an die Qualität ihrer Verbindung anzupassen. Das ist jetzt mit der Network Information API möglich, über die Webanwendungen auf Informationen zum Netzwerk des Nutzers zugreifen können.
Nutzung
Es gibt viele Möglichkeiten, wie Sie diese Netzwerkinformationen nutzen können, um die Nutzerfreundlichkeit zu verbessern:
- Je nach Netzwerk des Nutzers zwischen der Bereitstellung von Inhalten in hoher und niedriger Auflösung wechseln.
- Entscheiden Sie, ob Ressourcen vorab geladen werden sollen.
- Uploads und Downloads bei einer langsamen Internetverbindung verschieben
- Aktivieren Sie den Offlinemodus, wenn die Netzwerkqualität nicht gut genug ist, um die App zu laden und die Funktionen zu verwenden.
- Weisen Sie Nutzer darauf hin, dass etwas (z. B. das Ansehen eines Videos) über das Mobilfunknetz Geld kosten kann.
- Verwende ihn in deinen Analysen, um Daten zur Netzwerkqualität deiner Nutzer zu erfassen.
Viele Anwendungen tun bereits etwas Ähnliches. Beispielsweise passen YouTube, Netflix und die meisten anderen Video- (oder Videoanruf-)Dienste die Auflösung während des Streamings automatisch an. Während Gmail geladen wird, wird Nutzern der Link „Einfache HTML-Ansicht laden (für langsame Verbindungen)“ angezeigt.
Funktionsweise
Das Objekt navigator.connection
enthält Informationen zur Verbindung eines Clients. Die Eigenschaften werden in der folgenden Tabelle erläutert.
Attribut | Erklärung |
---|---|
downlink |
Die geschätzte Bandbreite in Megabit pro Sekunde. |
effectiveType |
Der effektive Verbindungstyp mit den möglichen Werten 'slow-2g' , '2g' , '3g' oder '4g' (umfasst 4G und höher). Wird anhand der Kombination aus Rücklaufzeit und Downlinkgeschwindigkeit ermittelt. Ein schneller Downlink in Kombination mit hoher Latenz hat beispielsweise aufgrund der Latenz einen niedrigeren effectiveType. |
onchange |
Ein Ereignis-Handler, der ausgelöst wird, wenn sich Verbindungsinformationen ändern. |
rtt |
Die geschätzte Umlaufzeit der Verbindung in Millisekunden. |
saveData |
Ein boolescher Wert, der definiert, ob der Nutzer einen Modus mit reduzierter Datennutzung angefordert hat. |
So sieht das aus, wenn Sie es in der Konsole des Browsers ausführen:
Die effectiveType
-Werte sind auch über Client-Hints verfügbar und ermöglichen es dir, den Verbindungstyp des Browsers an Server zu übermitteln.
Mit dem onchange
-Ereignis-Listener kannst du dich dynamisch an Änderungen der Netzwerkqualität anpassen. Wenn Sie Uploads oder Downloads aufgrund schlechter Netzwerkbedingungen verschoben haben, kann der Ereignis-Listener die Übertragung neu starten, wenn bessere Netzwerkbedingungen erkannt werden. Außerdem können Sie damit Nutzer benachrichtigen, wenn sich die Netzwerkqualität ändert. Wenn sie beispielsweise ihr WLAN-Signal verloren haben und auf ein Mobilfunknetz übertragen wurden, können versehentliche Datenübertragungen (und Gebühren) verhindert werden. 💸
Verwenden Sie den onchange
-Ereignis-Listener wie jeden anderen Ereignis-Listener:
navigator.connection.addEventListener('change', doSomethingOnChange);
Fazit
Die potenziellen Vorteile der Network Information API sind groß, insbesondere für Nutzer in langsamen Netzwerken und Anwendungen, die viel Bandbreite erfordern. Und das Beste daran ist, dass es als Technik zur progressiven Verbesserung verwendet werden kann.