Хранение результатов

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

Форматы хранения

  1. JSON Основной формат результатов Lighthouse — JSON. Он включает:

    • audits — список всех проведенных аудитов с оценками и подробными метриками.
    • categories — агрегированные показатели по ключевым направлениям, таким как Performance, SEO, Best Practices.
    • fetchTime — отметка времени проведения аудита.
    • finalUrl — URL протестированной страницы.

    Пример сохранения JSON через Node.js:

    const fs = require('fs');
    const lighthouse = require('lighthouse');
    const chromeLauncher = require('chrome-launcher');
    
    async function runLighthouse(url) {
      const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
      const options = {port: chrome.port};
      const result = await lighthouse(url, options);
      const reportJson = result.report;
      fs.writeFileSync('lighthouse-report.json', reportJson);
      await chrome.kill();
    }
    
    runLighthouse('https://example.com');

    JSON-файл можно использовать для автоматической агрегации показателей, построения графиков или интеграции в CI/CD-пайплайны.

  2. HTML Помимо JSON, Lighthouse может генерировать человеко-читаемый HTML-отчет, который включает визуализацию метрик, диаграммы и рекомендации по улучшению. Для сохранения HTML:

    const reportHtml = result.report; // Если указать формат 'html'
    fs.writeFileSync('lighthouse-report.html', reportHtml);

    HTML-отчет удобен для представления результатов команде и для наглядного анализа.

Организация хранения

Для долгосрочного мониторинга и сравнения результатов важно структурировать файлы и базы данных:

  • Именование файлов по дате и URL: lighthouse-2026-03-23-example.com.json Это позволяет быстро находить результаты конкретной даты или страницы.

  • Дерево папок по проектам:

    /lighthouse-reports
        /projectA
            /2026-03-23
                report.json
                report.html
        /projectB
            /2026-03-23
                report.json
  • Использование баз данных: Для больших проектов, где важен доступ к историческим данным и аналитика по трендам, JSON-результаты можно сохранять в NoSQL базы данных, например MongoDB. Каждое сохранение может включать:

    • project
    • url
    • timestamp
    • metrics (из JSON)

Автоматизация хранения

Lighthouse легко интегрируется в скрипты CI/CD, что позволяет автоматически сохранять результаты после каждого деплоя:

const { exec } = require('child_process');

exec('lighthouse https://example.com --output json --output-path ./reports/latest.json', (error) => {
  if (error) console.error(`Ошибка при запуске Lighthouse: ${error}`);
});

Можно настроить:

  • автоматическую загрузку отчетов на сервер;
  • генерацию сравнительных графиков изменений метрик;
  • оповещения при падении ключевых показателей.

Работа с историческими данными

JSON-структура позволяет вычислять метрики тренда:

  • средние значения производительности;
  • процентное изменение Core Web Vitals;
  • выявление страниц с регулярным падением показателей.

Примеры метрик, которые удобно хранить:

  • first-contentful-paint
  • largest-contentful-paint
  • cumulative-layout-shift
  • total-blocking-time

Рекомендации по оптимизации хранения

  • Всегда хранить исходный JSON, даже если нужен только HTML, так как JSON позволяет программно анализировать данные.
  • Использовать сжатие JSON для уменьшения объема при массовых отчетах (.gz).
  • Присваивать уникальные идентификаторы каждому результату, особенно если несколько тестов выполняются параллельно.
  • В базах данных разделять метрики и детальные отчеты, чтобы ускорить поиск и построение агрегированных данных.

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