Хранение истории

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

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

Lighthouse поддерживает экспорт отчетов в нескольких форматах:

  • JSON — структурированный формат, идеально подходящий для последующей обработки скриптами. Каждый отчет содержит детализированные метрики, данные о производительности, SEO, доступности и прогрессивных веб-приложениях.
  • HTML — визуально удобный формат для просмотра и презентации, но менее удобен для автоматического анализа.
  • CSV — подходит для экспорта метрик в табличные процессоры или системы аналитики.

Для хранения истории предпочтительно использовать JSON, так как это обеспечивает возможность автоматической агрегации данных, сравнения метрик и построения графиков.

Организация хранилища

История должна быть структурирована так, чтобы легко идентифицировать аудит каждой страницы и момент его проведения. Наиболее распространённые подходы:

  1. Иерархическая структура по датам:
/lighthouse-history
    /2026-03-24
        homepage.json
        dashboard.json
    /2026-03-25
        homepage.json
        dashboard.json

Этот метод позволяет быстро находить отчеты по дате и странице.

  1. Идентификаторы по URL и версии:
/lighthouse-history
    homepage/
        v1.json
        v2.json
    dashboard/
        v1.json
        v2.json

Используется, если важна версия страницы или приложения.

  1. Комбинированный подход: структура по страницам с подкаталогами по датам внутри каждой страницы. Это облегчает анализ метрик как во временной перспективе, так и по конкретной версии интерфейса.

Автоматизация сбора

Для регулярного аудита и хранения истории необходимо автоматизировать процесс:

  • Скрипты Node.js с использованием модуля lighthouse позволяют запускать аудиты через API и сохранять результаты.
  • Использование Cron или CI/CD систем (GitHub Actions, GitLab CI) обеспечивает периодический запуск аудитов.
  • В скриптах удобно использовать генерацию имен файлов по дате и URL, например:
const fs = require('fs');
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

(async () => {
    const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
    const options = {logLevel: 'info', output: 'json', port: chrome.port};
    const runnerResult = await lighthouse('https://example.com', options);

    const reportJson = runnerResult.report;
    const date = new Date().toISOString().split('T')[0];
    const path = `./lighthouse-history/${date}-homepage.json`;
    fs.writeFileSync(path, reportJson);

    await chrome.kill();
})();

Этот пример создаёт JSON-файл с названием, включающим дату, что упрощает последующий анализ истории.

Базы данных и аналитика

Для крупных проектов, где собирается много отчетов, удобно использовать NoSQL базы данных (MongoDB, Firebase) или релизационные СУБД (PostgreSQL) с таблицами:

  • url — адрес страницы
  • timestamp — время аудита
  • metrics — JSON с метриками Lighthouse

Такой подход позволяет строить динамику показателей, производить агрегирование, строить графики и выявлять тренды без ручного поиска файлов.

Методы анализа истории

  1. Сравнение версий — позволяет отслеживать изменения производительности после релиза.
  2. Индексация по категориям Lighthouse (Performance, SEO, Accessibility, Best Practices, PWA) — позволяет быстро выявить слабые места.
  3. Автоматическая генерация дашбордов с использованием Grafana, Kibana или Power BI — на основе данных из базы или JSON файлов.

Практические рекомендации

  • Хранить как минимум 30 последних аудитов для каждой ключевой страницы.
  • Регулярно очищать устаревшие файлы или архивировать их для долгосрочного хранения.
  • Включать в отчет метаданные: версию приложения, commit hash, окружение тестирования.
  • Использовать единый формат JSON с фиксированной структурой для всех страниц, чтобы облегчить автоматическую обработку.

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