Критический путь рендеринга (Critical Rendering Path) — это последовательность шагов, которую браузер выполняет для преобразования HTML, CSS и JavaScript в визуально отображаемую страницу. Оптимизация критического пути напрямую влияет на скорость загрузки страницы и восприятие производительности пользователем.
Ключевые этапы критического пути:
Парсинг HTML и построение DOM HTML-документ анализируется браузером, создается объектная модель документа (DOM). DOM — это дерево узлов, отражающее структуру HTML. Каждый элемент, атрибут и текстовый узел становятся отдельным узлом в дереве.
Парсинг CSS и построение CSSOM CSS-файлы и встроенные стили анализируются для создания CSS Object Model (CSSOM). CSSOM — это дерево стилей, определяющее, какие свойства применяются к каким элементам DOM.
Построение Render Tree Render Tree формируется
объединением DOM и CSSOM. Он содержит только видимые элементы и их
визуальные стили. Скрытые элементы (например, с
display: none) исключаются. Render Tree — это база для
визуализации страницы.
Layout (Reflow) На этом этапе вычисляются размеры и позиции всех элементов Render Tree. Каждому элементу присваиваются координаты на экране. Этот процесс может быть дорогостоящим, особенно при динамических изменениях DOM и CSS.
Painting После расчета геометрии начинается процесс отрисовки (painting). Каждый узел Render Tree преобразуется в пиксели на экране. В современном браузере это может делиться на несколько этапов: слоями, текстурами и буферами.
Блокирующие ресурсы — это файлы, которые замедляют парсинг HTML и построение Render Tree. К ним относятся:
<script> без атрибутов async или
defer, блокируют парсинг HTML до завершения их
выполнения.Оптимизация критического пути требует минимизации таких блокирующих ресурсов:
async или defer для
скриптовGoogle Lighthouse предоставляет инструмент для анализа производительности и критического пути рендеринга. Основные метрики:
Lighthouse позволяет выявить:
Минимизация CSS:
media-атрибутов для условной
загрузкиОптимизация Jav * aScript:
defer для неважных скриптовОптимизация рендеринга шрифтов:
font-display: swap<link rel="preload">Для анализа критического пути можно использовать инструменты разработчика Chrome:
Использование Lighthouse вместе с DevTools позволяет построить полную карту критического пути, выявить узкие места и приоритизировать оптимизации, влияющие на скорость первого рендеринга и восприятие производительности страницы.
defer.lazy-loading для изображений и незначимых элементов
DOM.Эти методы напрямую сокращают время до First Contentful Paint и Largest Contentful Paint, повышая оценку производительности в Lighthouse и улучшая пользовательский опыт.