Critical render path
Критический путь рендеринга (Critical Rendering Path, CRP) — это последовательность шагов, которые браузер выполняет для преобразования HTML, CSS и JavaScript в пиксели на экране. Оптимизация критического пути рендеринга важна для ускорения загрузки и отображения веб-страниц, что напрямую влияет на пользовательский опыт.
Основные этапы критического пути рендеринга:
- Загрузка HTML:
- Браузер загружает HTML-документ и начинает его парсить.
- Во время парсинга браузер встречает ссылки на внешние ресурсы (CSS, JavaScript, изображения) и начинает их загружать.
- Построение DOM (Document Object Model):
- Браузер преобразует HTML в дерево DOM.
- Каждый HTML-элемент становится узлом в DOM.
- Загрузка CSS:
- Браузер загружает CSS-файлы и встроенные стили (
<style>). - CSS парсится и преобразуется в CSSOM (CSS Object Model).
- Браузер загружает CSS-файлы и встроенные стили (
- Построение CSSOM (CSS Object Model):
- CSSOM представляет собой дерево стилей, где каждый узел соответствует CSS-правилу.
- CSSOM используется для определения стилей элементов.
- Создание дерева рендеринга (Render Tree):
- Браузер объединяет DOM и CSSOM в дерево рендеринга.
- Дерево рендеринга содержит только видимые элементы (например, элементы с
display: noneне включаются).
- Компоновка (Layout):
- Браузер рассчитывает положение и размеры каждого элемента на странице.
- Этот процесс также называется рефлоу (reflow).
- Отрисовка (Painting):
- Браузер отрисовывает пиксели на экране на основе данных из дерева рендеринга.
- Этот процесс включает в себя растеризацию (rasterization) и отрисовку слоев.
- Композиция (Composition):
- Браузер объединяет слои (например, элементы с
position: fixedили анимации) для финального отображения.
- Браузер объединяет слои (например, элементы с

Как оптимизировать критический путь рендеринга?
Оптимизация CRP направлена на ускорение загрузки и отображения контента, особенно "выше сгиба" (above the fold). Основные подходы:
- Минимизация размера файлов:
- Сжимайте HTML, CSS и JavaScript (например, с помощью Gzip или Brotli).
- Удаляйте лишние пробелы, комментарии и неиспользуемый код.
- Уменьшение количества ресурсов:
- Объединяйте CSS и JavaScript-файлы.
- Используйте встроенные стили для критического CSS (Critical CSS).
- Оптимизация загрузки CSS:
- Разделяйте CSS на критический и некритический.
- Используйте
media-атрибуты для загрузки только необходимых стилей:
- Оптимизация загрузки JavaScript:
- Используйте атрибуты async или defer для загрузки скриптов без блокировки рендеринга:
- Переносите скрипты в конец документа (перед закрывающим тегом
</body>).
- Приоритизация загрузки ресурсов:
- Используйте
<link rel="preload">для приоритетной загрузки критических ресурсов:
- Используйте
- Оптимизация изображений:
- Используйте современные форматы (WebP, AVIF).
- Сжимайте изображения и используйте
srcsetдля адаптивной загрузки.
- Минимизация количества рефлоу и репинтов:
- Избегайте изменения стилей, которые вызывают рефлоу (например,
width,height,margin). - Используйте
transformиopacityдля анимаций, так как они не вызывают рефлоу.
- Избегайте изменения стилей, которые вызывают рефлоу (например,
- Использование кеширования:
- Настройте кеширование статических ресурсов (CSS, JS, изображения) на стороне сервера.
Пример оптимизации CRP:
- Критический CSS:
- Встраивайте стили, необходимые для отображения контента "выше", прямо в HTML
- Асинхронная загрузка скриптов:
- Используйте async или defer для загрузки JavaScript
- Предзагрузка шрифтов:
- Загружайте шрифты заранее, чтобы избежать задержек
Почему это важно?
- Ускорение загрузки: Оптимизация CRP уменьшает время до первого отображения контента (First Contentful Paint, FCP).
- Улучшение пользовательского опыта: Быстрая загрузка страницы повышает удовлетворенность пользователей.
- SEO: Скорость загрузки страницы влияет на ранжирование в поисковых системах.
🚀 Источник: DeepSeek
🚀 Источник: https://www.youtube.com/watch?v=Ff_IZrs4GcY