В 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 г.