- Оригинальный адрес:Adaptive Serving using JavaScript and the Network Information API
- Оригинальный автор:Addy Osmani
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:Raoul1996
- Корректор:Guangping,CoderMing
Внедрение адаптивных сервисов с использованием JavaScript и API веб-информации.
navigator.connection.effectiveType
Может давать разные результаты в зависимости от качества сетевого подключения пользователя.
effectiveTypeдаNetwork Information APIСобственность, в JavaScript черезnavigator.connectionОбъекты в вызове. В браузере Chrome вы можете поместить следующее в devtools, чтобы увидеть эффективный тип подключения (ECT):
console.log(navigator.connection.effectiveType); // 4G
effectiveType
Возможные значения: «slow-2g», «2g», «3g» или «4g». Эта функция позволяет ускорить загрузку страниц, предоставляя ресурсы более низкого качества при низкой скорости интернета.
До Chrome 62 мы публиковали для разработчиков только теоретические типы сетевых подключений (черезnavigator.connection.type
), а не фактическое качество сетевого подключения клиента.
Активный тип подключения Chrome в настоящее время определяется с помощью комбинации недавно наблюдаемого времени приема-передачи (rtt) и значений нисходящей линии связи.
Он суммирует измеренную производительность сетевого подключения для ближайшего типа сотового подключения (например, 2G), даже если вы действительно подключены к WiFi. Как видно на картинке, вы подключены к Starbucks WiFi, но на самом деле ваш активный тип сети — 2G или 3G.
Как бороться с изменением качества сетевого соединения? мы можем пройтиconnection.onchange
Слушатели событий для прослушивания сетевых изменений:
function onConnectionChange() {
const { rtt, downlink, effectiveType, saveData } = navigator.connection;
console.log(`有效网络连接类型: ${effectiveType}`);
console.log(`估算的下行速度/带宽: ${downlink}Mb/s`);
console.log(`估算的往返时间: ${rtt}ms`);
console.log(`打开/请求数据保护模式: ${saveData}`);
}
navigator.connection.addEventListener('change', onConnectionChange)
Вот быстрый тест, в котором я смоделировал конфигурацию «низкоскоростного телефона» в DevTools и смог переключиться с «4g» на «2g»:
effectiveType
Поддерживаются Chrome, Opera и Firefox на Android, некоторые другие советы по качеству сети можно найти по адресуnavigator.connection
Просмотр в том числеrtt
,downlink
а такжеdownlinkMax
.
Я работаю над проектом с открытым исходным кодом на основе Vue.js -Google DoodlesВ приложении используется EffectiveType. Основываясь на значении ECT, мы можем использовать привязку данных дляconnection
свойство установлено наfast
илиslow
. Примерно так:
if (/\slow-2g|2g|3g/.test(navigator.connection.effectiveType)) {
this.connection = "slow";
} else {
this.connection = "fast";
}
Это позволяет нам отображать различные выходные данные (видео или изображения с низким разрешением) в зависимости от типа активного подключения пользователя.
<template>
<div id="home">
<div v-if="connection === 'fast'">
<!-- 1.3MB video -->
<video class="theatre" autoplay muted playsinline control>
<source src="/static/img/doodle-theatre.webm" type="video/webm">
<source src="/static/img/doodle-theatre.mp4" type="video/mp4">
</video>
</div>
<!-- 28KB image -->
<div v-if="connection === 'slow'">
<img class="theatre" src="/static/img/doodle-theatre-poster.jpg">
</div>
</div>
</template>
Макс Бёк писал об использовании ReactКомплектующие к сетиСтатья довольно интересная. Он предлагает, как отображать различные компоненты в зависимости от скорости сети:
switch(connectionType) {
case '4g':
return <Video src={videoSrc} />
case '3g':
return <Image src={imageSrc.hires} alt={alt} />
default:
return <Image src={imageSrc.lowres} alt={alt} />
}
Примечание: вы можетеeffectiveType
Используйте с Service Workers для работы с пользователями, уходящим в автономный режим из-за медленного соединения.
Для отладки вы можете переопределить оценку качества сети с помощью флага Chrome «force-efficient-connection-type», который можно установить в chrome://flags. Эмуляция сети DevTools также может предоставить ограниченный опыт отладки для ETC.
effectiveType
значение также может быть переданоПодсказка клиентаПубличный, позволяющий разработчикам сообщать серверу о скорости сетевого подключения Chrome.
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.