- Оригинальный адрес: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,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.