Lighthouse — это инструмент автоматизированного аудита веб-приложений, предназначенный для измерения производительности, доступности, SEO и других ключевых параметров. Центральным элементом анализа производительности являются метрики и таймеры, которые позволяют понять, как быстро страница становится интерактивной и удобной для пользователя.
First Contentful Paint (FCP) Измеряет время до появления первого визуального контента на странице. Этот таймер запускается с момента начала загрузки страницы и останавливается, когда браузер рендерит первый текст, изображение, SVG или канвас. FCP важен для оценки первого впечатления пользователя о скорости загрузки.
Largest Contentful Paint (LCP) Фиксирует момент, когда загруженный наибольший элемент контента (обычно текстовый блок или крупное изображение) полностью отображен на экране. LCP является ключевым индикатором восприятия скорости загрузки пользователем и часто используется в Core Web Vitals.
Time to Interactive (TTI) Определяет момент, когда страница становится полностью интерактивной. TTI учитывает, что на странице может быть видимый контент, но обработка событий (клики, скролл, ввод данных) ещё недоступна. Высокий TTI сигнализирует о том, что ресурсы блокируют интерактивность.
Total Blocking Time (TBT) Суммарное время, в течение которого основной поток был заблокирован задачами JavaScript, превышающими 50 мс. TBT напрямую коррелирует с отзывчивостью страницы: чем меньше TBT, тем быстрее пользовательский интерфейс реагирует на действия.
Cumulative Layout Shift (CLS) Метрика визуальной стабильности страницы. CLS измеряет суммарное смещение всех нестабильных элементов во время загрузки. Низкий CLS означает, что контент не “скачет”, повышая удобство взаимодействия.
Lighthouse использует метки времени событий в браузере для измерения показателей. Для этого применяются следующие методы:
Performance API Позволяет получать метрики с
высокой точностью. В частности, performance.mark() и
performance.measure() используются для создания
пользовательских таймеров, а
performance.getEntriesByType('paint') и
performance.getEntriesByType('largest-contentful-paint')
позволяют получить данные о FCP и LCP.
Long Tasks API Используется для анализа блокирующих задач в основном потоке. Тул отслеживает события длительностью более 50 мс и учитывает их при вычислении TBT.
Layout Shift API Слежение за изменениями позиции
элементов. Lighthouse использует события layout-shift для
вычисления CLS.
Метрики Lighthouse позволяют разработчикам:
Lighthouse позволяет создавать пользовательские аудитории, используя собственные метрики. Для этого:
performance.mark() в код
страницы для отслеживания специфических событий.Метрики и таймеры в Lighthouse формируют основу анализа производительности и качества пользовательского опыта. Правильная интерпретация этих данных позволяет создавать веб-приложения, которые загружаются быстро, работают плавно и не вызывают раздражения у пользователей.