В 2007 году нас пригласили выступить на мероприятии Apple WWDC. В то время мы не знали, почему нас пригласили. Позже мы узнали, что, поскольку изначально не было родного SDK, разработчикам посоветовали использовать JavaScript, HTML и CSS для создания приложений для iPhone, и им было предложено посетить нашу сессию.
Очевидно, что мир сильно изменился с 2007 года, но один из вопросов, который мы задали команде Apple в то время, был: «Какие API будут доступны разработчикам для работы с телефонами?» Ответ, который мы получили, заключался в том, что Apple намеревалась работать со стандартными телами, прежде чем добавлять новые веб-API. Одним из первых API, который мы хотели увидеть, была информация о скорости сети просто потому, что мобильные сети значительно медленнее, чем соединения Ethernet и Wi-Fi.
API сетевой информации
Перенесемся на 12 лет вперед, и после многих лет попыток разработчиков протестировать скорость сети, WICG разработала новый API сетевой информации: «API сетевой информации позволяет веб-приложениям получать доступ к информации об используемом сетевом соединении с помощью Устройство."
В предложении представлено несколько простых API:
navigator.connection.type
- тип соединения, которое может быть Bluetooth, сотовая связь, Ethernet, смешанное, нет, другое, неизвестное, Wi-Fi или Wimax.navigator.connection.effectiveConnectionType
— мера скорости соединения, которая может быть 2g, 3g, 4g или медленная — 2g.downlinkMax
- верхняя граница скорости нисходящего канала для первого сетевого перехода в мегабитах в секунду.downlink
— оценка эффективной пропускной способности в мегабитах в секунду на основе недавно наблюдаемой пропускной способности прикладного уровня.rtt
— оценка эффективного времени приема-передачи в миллисекундах на основе недавно наблюдаемых измерений RTT на прикладном уровне.saveData
— true, если пользователь запрашивает режим сокращенного использования данных
Поддержка браузеров и варианты использования
Полная поддержка API сетевой информации существует в Chrome для Android (78+), Firefox для Android (68+) и Samsung Internet (10.1+). Частичная поддержка настольных браузеров существует в Chrome 79+ и Edge 76+.
Есть много возможных вариантов использования Network Information API. Например, потребление полосы пропускания может быть уменьшено в медленных или сотовых сетях, активы могут по-разному кэшироваться с помощью сервис-воркеров, а автономное соединение может быть принято, если скорость соединения настолько низкая, что это фактически то же самое, что и в автономном режиме.
Вывод
Хотя прошло более десяти лет с момента выпуска первого iPhone, чтобы получить этот API, это интересное предложение, которое, как мы надеемся, позволит приложениям предоставлять оптимизированные варианты для более медленных интернет-соединений и позволит пользователям запрашивать меньшие запросы данных, когда их пропускная способность ограничена или измеряется.
Если вам нужна помощь в создании высокопроизводительных приложений или использовании новых API и лучших практик, свяжитесь с нами, чтобы обсудить, как мы можем помочь!
Подпишитесь на SitePen в Twitter, Facebook и LinkedIn.
Первоначально опубликовано на https://www.sitepen.com 18 ноября 2019 г.