Бюджеты производительности в Lighthouse представляют собой инструмент для контроля размеров ресурсов и времени загрузки страниц. Они позволяют задать ограничения на различные показатели сайта, чтобы поддерживать его производительность на заданном уровне. Основная идея — определить заранее допустимые пределы и автоматически отслеживать их при аудите.
Lighthouse поддерживает несколько типов бюджетов, каждый из которых фокусируется на отдельном аспекте производительности:
Сетевые бюджеты (Network Budgets) Определяют лимиты для сетевых ресурсов, таких как скрипты, стили, изображения и шрифты. Основные параметры:
resourceType — тип ресурса (script, stylesheet, image,
font, document, other).budget — максимальный размер ресурса в килобайтах
(KB).count — максимально допустимое количество ресурсов
данного типа.Тайминг-бюджеты (Timing Budgets) Контролируют ключевые показатели времени загрузки, например:
Общие бюджеты (General Budgets) Сюда входят комбинированные ограничения: количество сетевых запросов, общий размер страниц, размер JavaScript и CSS. Позволяют комплексно оценивать производительность и выявлять проблемные участки.
Бюджеты задаются в формате JSON, который подключается к конфигурации Lighthouse. Пример структуры:
{
"resourceSizes": [
{
"resourceType": "script",
"budget": 150,
"count": 10
},
{
"resourceType": "image",
"budget": 500,
"count": 20
}
],
"timings": [
{
"metric": "first-contentful-paint",
"budget": 1000
},
{
"metric": "largest-contentful-paint",
"budget": 2500
}
],
"resourceCounts": [
{
"resourceType": "stylesheet",
"budget": 5
}
]
}
resourceSizes — лимиты на размер ресурсов.timings — лимиты на время ключевых метрик.resourceCounts — лимиты на количество ресурсов
определённого типа.Эта конфигурация позволяет интегрировать проверки в CI/CD и выявлять нарушения бюджета автоматически.
Через командную строку Lighthouse позволяет
использовать опцию --budgets для передачи JSON-файла с
бюджетами:
lighthouse https://example.com --budgets=budgets.jsonЧерез 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, budgets: require('./budgets.json')};
const result = await lighthouse('https://example.com', options);
console.log(result.lhr);
await chrome.kill();
})();Интеграция с CI/CD Использование бюджетов в автоматических проверках позволяет блокировать деплой, если страницы превышают установленные лимиты. Это помогает поддерживать стабильную производительность и избегать деградации сайта с ростом контента.
Использование бюджетов в Lighthouse превращает аудит сайта из разового анализа в систематический процесс контроля производительности, позволяя строить устойчивый, быстрый и лёгкий веб-продукт.