Низкая пропускная способность и высокая задержка

Важно понимать, как работает ваше приложение или сайт при плохом или нестабильном подключении, и учитывать это при разработке. Вам могут помочь различные инструменты.

Тестирование при низкой пропускной способности и высокой задержке

Все больше людей пользуются интернетом на мобильных устройствах. Даже дома многие отказываются от фиксированного широкополосного доступа в пользу мобильного.

В этом контексте важно понимать, как работает ваше приложение или сайт при плохом или ненадежном подключении. Существует множество программных инструментов, которые позволяют эмулировать и симулировать низкую пропускную способность и высокую задержку.

Эмуляция ограничения пропускной способности сети

При создании или обновлении сайта необходимо обеспечить его адекватную производительность в различных условиях подключения. Для этого есть несколько инструментов.

Инструменты браузера

Инструменты разработчика Chrome позволяют протестировать сайт при разных скоростях загрузки и скачивания и времени прохождения сигнала, используя стандартные или пользовательские настройки на панели "Сеть". Подробнее о том, как начать работу с инструментом "Анализ эффективности сети"…

Ограничение инструментов разработчика Chrome

Системные инструменты

Network Link Conditioner – это панель настроек, доступная на компьютерах Mac, если вы установите Hardware IO Tools для Xcode.

Панель управления Network Link Conditioner на Mac

Настройки Network Link Conditioner на Mac

Специальные настройки Network Link Conditioner для Mac

Эмуляция устройств

Эмулятор Android позволяет имитировать различные условия сети при запуске приложений (включая веб-браузеры и гибридные веб-приложения) на Android.

эмулятор Android

Настройки эмулятора Android

Для iPhone можно использовать Network Link Conditioner, чтобы симулировать ухудшение условий сети (см. выше).

Протестируйте работу сайта в разных местоположениях и сетях

Качество подключения зависит от местоположения сервера и типа сети.

WebPagetest – это онлайн-сервис, который позволяет тестировать производительность сайта в разных сетях и регионах. Например, вы можете протестировать свой сайт на сервере в Индии в сети 2G или по кабелю из города в США.

Настройки WebPagetest

Выберите местоположение, а затем в расширенных настройках выберите тип подключения. Вы даже можете автоматизировать тестирование с помощью скриптов (например, для входа на сайт) или RESTful API. Это позволяет включить проверку подключения в процессы сборки или ведение журнала производительности.

Fiddler поддерживает глобальное проксирование через GeoEdge, а его специальные правила можно использовать для имитации скорости модема.

Прокси-сервер Fiddler

Тестирование в сети с низкой скоростью передачи данных

Программные и аппаратные прокси-серверы позволяют эмулировать проблемные условия мобильной сети, такие как ограничение пропускной способности, задержка пакетов и случайная потеря пакетов. Общий прокси-сервер или сеть с ограниченной пропускной способностью позволяют разработчикам тестировать приложения в условиях, приближенных к реальным.

Augmented Traffic Control (ATC) от Facebook – это набор приложений с лицензией BSD, которые можно использовать для формирования трафика и эмуляции ухудшенных условий сети:

Facebook Augmented Traffic Control

Facebook даже ввел вторники 2G, чтобы понять, как люди используют их продукт в сетях 2G. По вторникам у сотрудников появляется всплывающее окно с предложением симулировать подключение 2G.

Для настройки пропускной способности и задержки можно использовать HTTP/HTTPS-прокси Charles. Charles – это коммерческое ПО, но у него есть бесплатная пробная версия.

Настройки пропускной способности и задержки прокси-сервера Charles

Дополнительную информацию о Charles можно найти на сайте codewithchris.com.

Как справиться с ненадежным подключением и "lie-fi"

Что такое Lie-Fi?

Термин lie-fi появился по крайней мере в 2008 году (когда телефоны выглядели так) и относится к подключению, которое не является тем, чем кажется. Браузер ведет себя так, как будто подключение есть, хотя по какой-то причине это не так.

Неправильная интерпретация подключения может привести к ухудшению работы, поскольку браузер (или JavaScript) упорно пытается получить ресурсы, вместо того чтобы сдаться и выбрать разумный резервный вариант. Lie-fi может быть даже хуже, чем отсутствие подключения. Если устройство точно находится в офлайн-режиме, JavaScript может предпринять соответствующие действия.

Проблема ложного Wi-Fi, скорее всего, будет усугубляться, поскольку все больше людей переходят на мобильный интернет и отказываются от фиксированного широкополосного доступа. Согласно последним данным переписи населения США, пользователи отказываются от фиксированного широкополосного доступа. На следующей диаграмме показано использование мобильного интернета дома в 2015 году по сравнению с 2013 годом:

Диаграмма на основе данных переписи населения США, показывающая переход от фиксированного широкополосного доступа к мобильному, особенно в семьях с низким доходом

Используйте тайм-ауты для обработки прерывистого подключения

Раньше для проверки периодического подключения использовались методы взлома с помощью XHR, но сервисный работник позволяет использовать более надежные методы установки тайм-аутов сети. Это можно сделать с помощью Workbox, добавив всего несколько строк кода:

workboxSW.router.registerRoute(
  '/path/to/image',
  workboxSW.strategies.networkFirst({networkTimeoutSeconds: 3}),
);

Подробнее о Workbox можно узнать из выступления Джеффа Посника (Jeff Posnick) на Chrome Dev Summit: Workbox: Flexible PWA Libraries.

Функция тайм-аута также разрабатывается для Fetch API, а Streams API должен помочь оптимизировать доставку контента и избежать монолитных запросов. Джейк Арчибальд (Jake Archibald) рассказывает о том, как бороться с lie-fi, в статье Supercharging page load (на английском языке).

Как оставить отзыв