Lighthouse предоставляет возможность тонкой настройки параметров throttling, что позволяет моделировать различные сетевые и вычислительные условия для анализа производительности веб-страниц. По умолчанию Lighthouse использует стандартные профили, однако для точного тестирования и воспроизведения конкретных сценариев могут понадобиться кастомные настройки.
Lighthouse оперирует тремя основными типами throttling:
Каждый из этих типов может быть настроен отдельно или комбинирован для имитации конкретных пользовательских условий.
Сетевой throttling управляется через параметры:
rttMs – задержка в миллисекундах (Round Trip Time)throughputKbps – скорость передачи данных в килобитах в
секундуrequestLatencyMs – дополнительная задержка на уровне
запросаПример кастомного профиля:
const customNetworkThrottling = {
rttMs: 150,
throughputKbps: 1200,
requestLatencyMs: 50
};
Эта конфигурация имитирует типичное мобильное соединение 3G с небольшими пиковыми задержками.
CPU throttling управляется коэффициентом замедления
(cpuSlowdownMultiplier). Он задает, во сколько раз
процессорная нагрузка будет увеличена для симуляции слабого
устройства.
const customCPUThrottling = {
cpuSlowdownMultiplier: 4
};
Коэффициент 4 означает, что JavaScript будет выполняться в четыре раза медленнее, что позволяет протестировать время рендеринга на слабых мобильных устройствах.
Для использования кастомных настроек необходимо передавать их через config при запуске Lighthouse. Основные шаги:
throttling внутри
settings.Пример:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {
port: chrome.port,
settings: {
throttlingMethod: 'simulate', // или 'devtools'
throttling: {
rttMs: 150,
throughputKbps: 1200,
cpuSlowdownMultiplier: 4,
requestLatencyMs: 50
}
}
};
const result = await lighthouse('https://example.com', options);
console.log(result.lhr.categories.performance.score);
await chrome.kill();
})();
throttlingMethod: 'simulate' – позволяет имитировать
слабое устройство без изменения системных настроек.throttlingMethod: 'devtools' – применяет настройки
напрямую через DevTools Protocol.Для точного анализа производительности важно комбинировать сетевой и CPU throttling. Например, для эмуляции старого смартфона с медленным интернетом:
const combinedThrottling = {
rttMs: 200,
throughputKbps: 800,
cpuSlowdownMultiplier: 6,
requestLatencyMs: 100
};
При такой конфигурации Lighthouse сможет более реалистично показать First Contentful Paint, Time to Interactive и другие метрики, которые сильно зависят от скорости сети и процессора.
Включение кастомного throttling в автоматизированные тесты позволяет:
Пример конфигурации для CI:
settings: {
throttlingMethod: 'simulate',
throttling: {
rttMs: 300,
throughputKbps: 500,
cpuSlowdownMultiplier: 6,
requestLatencyMs: 150
},
onlyCategories: ['performance']
}
emulatedFormFactor
(mobile/desktop) дает наиболее достоверные результаты.Кастомные настройки throttling в Lighthouse позволяют получать максимально точные и воспроизводимые данные о производительности веб-приложений в условиях, близких к реальным, а также выявлять узкие места, которые стандартные профили не показывают.