Lighthouse предоставляет мощный инструмент для аудита веб-страниц, но одним из ключевых аспектов правильного анализа является реалистичность условий, в которых выполняется проверка. Настройка среды имитации пользователя позволяет получить показатели, максимально приближенные к реальному поведению посетителей сайта.
Для корректной оценки скорости загрузки страниц необходимо имитировать реальные сетевые условия. Lighthouse поддерживает настройку пропускной способности и задержки сети:
Пример настройки в Lighthouse через Node.js API:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port, throttlingMethod: 'simulate'};
const runnerResult = await lighthouse('https://example.com', options);
console.log('Performance score:', runnerResult.lhr.categories.performance.score * 100);
await chrome.kill();
})();
Параметр throttlingMethod: 'simulate' позволяет
эмулировать реальные сетевые задержки без необходимости изменения
настроек браузера вручную.
Lighthouse способен имитировать различные устройства, включая мобильные и десктопные. Настройка эмуляции устройства влияет на следующие аспекты:
Пример конфигурации устройства:
const options = {
port: chrome.port,
emulatedFormFactor: 'mobile', // 'desktop' или 'none'
};
Эмуляция мобильного устройства позволяет оценить производительность страниц на слабых устройствах, что критично для реальной аудитории.
Для тестирования производительности на устройствах с низкой производительностью применяется CPU throttling. В Lighthouse этот параметр задается автоматически при выборе мобильной эмуляции, но может быть изменен вручную:
cpuSlowdownMultiplier – множитель замедления
процессора. Например, значение 4 означает, что процессор
будет работать в 4 раза медленнее.const options = {
throttling: {
cpuSlowdownMultiplier: 4,
requestLatencyMs: 150,
downloadThroughputKbps: 1.6 * 1024,
uploadThroughputKbps: 750,
},
};
Эти настройки обеспечивают приближение аудита к реальному пользовательскому опыту.
Для повышения точности результатов Lighthouse поддерживает возможность интеграции custom scripts для симуляции действий пользователей:
Пример с использованием Puppeteer для имитации действий:
const puppeteer = require('puppeteer');
const lighthouse = require('lighthouse');
(async () => {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.click('#startButton');
await page.waitForSelector('#result');
const result = await lighthouse(page.url(), {port: new URL(browser.wsEndpoint()).port});
console.log(result.lhr.categories.performance.score);
await browser.close();
})();
Такая интеграция позволяет учитывать динамические изменения контента и взаимодействия пользователя, которые сильно влияют на показатели LCP, FID и CLS.
Настройка реалистичных условий в Lighthouse объединяет три ключевых направления:
Правильная конфигурация этих параметров обеспечивает максимально точное отражение пользовательского опыта, позволяет выявлять реальные проблемы производительности и предоставляет достоверные рекомендации по оптимизации сайта.