Network throttling — механизм искусственного ограничения скорости
сетевого соединения и задержки отклика сервера, используемый в
Lighthouse для анализа производительности веб-страниц в условиях
различных сетевых условий. Основная цель этого подхода — воспроизвести
пользовательский опыт на медленных или нестабильных сетях и выявить
узкие места в загрузке контента.
Принципы работы
Lighthouse использует DevTools Protocol для управления сетевыми
условиями. При активации throttling устанавливаются следующие
параметры:
- Download throughput — скорость загрузки данных с
сервера (в Кбит/с).
- Upload throughput — скорость отправки данных на
сервер (в Кбит/с).
- Latency — задержка запроса, имитирующая время
распространения сигнала по сети (в миллисекундах).
Эти параметры позволяют симулировать различные сетевые сценарии,
например:
- 3G Slow — высокая задержка и низкая скорость передачи
данных, характерная для медленных мобильных сетей.
- 4G — умеренная задержка и высокая скорость передачи данных,
приближенная к современным мобильным соединениям.
- Offline — имитация отсутствия сетевого соединения, полезна
для проверки PWA и кэширования.
Настройка throttling в
Lighthouse
Throttling можно настроить двумя способами:
- Через интерфейс Chrome DevTools при запуске
Lighthouse. Здесь предоставляется набор предустановленных профилей
сети.
- Программно через Node.js API Lighthouse позволяет
создавать кастомные конфигурации:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {
port: chrome.port,
throttling: {
rttMs: 150,
throughputKbps: 1638.4,
requestLatencyMs: 150,
cpuSlowdownMultiplier: 4
}
};
const results = await lighthouse('https://example.com', options);
console.log(results.lhr.categories.performance.score);
await chrome.kill();
})();
В этом примере:
rttMs — эмулирует время отклика сети.
throughputKbps — пропускная способность канала в
килобитах в секунду.
cpuSlowdownMultiplier — замедление работы процессора
для моделирования устройств с низкой производительностью.
Влияние network
throttling на метрики
Network throttling напрямую влияет на ключевые показатели
производительности:
- First Contentful Paint (FCP) и Largest
Contentful Paint (LCP) растут с увеличением задержки сети и
снижением скорости передачи данных.
- Time to Interactive (TTI) становится больше, так
как браузер дольше получает и обрабатывает ресурсы.
- Total Blocking Time (TBT) увеличивается при высокой
задержке сети и низкой пропускной способности, особенно если скрипты
зависят от внешних API.
Правильная конфигурация throttling позволяет выявить критические
узкие места и оптимизировать загрузку ресурсов, уменьшить блокирующие
скрипты и улучшить пользовательский опыт.
Продвинутые техники
- Комбинирование network throttling с CPU throttling:
позволяет эмулировать старые или бюджетные устройства.
- Использование кастомных профилей: позволяет
тестировать конкретные сценарии, например, городскую сеть с нестабильным
3G или региональную сеть с ограниченной скоростью.
- Сценарное тестирование: последовательное
воспроизведение сети с различными скоростями для анализа влияния на
критические метрики и загрузку сторонних библиотек.
Практические советы
- Для оценки мобильного опыта рекомендуется использовать медленные
3G-сценарии с задержкой около 400–600 мс.
- Для тестирования десктопных приложений подходят профили с задержкой
100–150 мс и высокой пропускной способностью.
- Network throttling следует комбинировать с мониторингом загрузки
ресурсов и waterfall-диаграммами для выявления элементов, вызывающих
задержки.
Network throttling в Lighthouse — инструмент для глубокой симуляции
реальных условий, позволяющий разработчикам точно измерять влияние сети
на производительность и обеспечивать стабильный пользовательский опыт на
любых устройствах и сетях.