Что такое критический путь рендера

Ответ

Критический путь рендера (Critical Rendering Path) — это последовательность шагов, которые браузер выполняет для преобразования HTML, CSS и JavaScript в пиксели на экране. Оптимизация CRP ускоряет время первого рендера.

Основные этапы:

  1. DOM — парсинг HTML и построение дерева DOM
  2. CSSOM — парсинг CSS и построение дерева CSSOM
  3. Render Tree — комбинация DOM и CSSOM
  4. Layout — вычисление позиций и размеров элементов
  5. Paint — отрисовка пикселей

Пример оптимизации:

<!-- Подключаем критический CSS в head -->
<style>
  .header { color: red; }
</style>
<!-- Остальной CSS асинхронно -->
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">

Оптимизируя CRP, мы минимизируем количество блокирующих ресурсов и сокращаем время до первого значимого рендера.

Ответ 18+ 🔞

Да ты послушай, что за дичь творится в браузере, когда он страницу показывает! Это ж не просто взял и нарисовал, там целая операция под кодовым названием «Критический путь рендера»! Блядь, звучит как план захвата моей последней бутылки пива, но на деле это последовательность шагов, чтобы из твоего кривого HTML, CSS и JavaScript сделать хоть что-то видимое на экране. Если его не оптимизировать, страница грузится, будто через жопу, прости господи.

Смотри, как оно всё, сука, происходит:

  1. DOM — браузер читает твой HTML, как запойный книголюб, и строит из него дерево. Каждый тег — ветка, понимаешь?
  2. CSSOM — параллельно он, этот трудяга, жрёт твои стили и строит ещё одно дерево, но уже про то, как всё должно выглядеть. А если стили в другом файле, он ждёт, пока тот файл доползёт, блядь!
  3. Render Tree — потом он, хитрая жопа, скрещивает эти два дерева в одно — Render Tree. Туда попадает только то, что будет видно на экране. Спрятал display: none? Не попал, лох!
  4. Layout — а вот тут начинается магия! Браузер вычисляет, где и какого размера будет каждая хрень на странице. Переместил один div? Приготовься, всё пересчитается, ёпта! Это и есть «reflow», от которого все стонут.
  5. Paint — и наконец, когда все координаты известны, начинается отрисовка пикселей. «Repaint», если что-то поменяло только цвет, но не размер.

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

<!-- Кидаем самый важный, критический CSS прямо в <head>, чтобы не ждать -->
<style>
  .header { color: red; }
  .button { display: block; }
</style>
<!-- А всё остальное, не такое важное, подгружаем асинхронно, чтоб не тормозило -->
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">

Суть в чём? Надо свести к ебеням, простите, к минимуму всё, что браузеру мешает быстро построить и нарисовать первый кадр. Убрать блокирующий JS из начала, впихнуть критичные стили прямо в HTML, остальное — потом. Сделаешь это — и страница перестанет открываться со скоростью хуй с горы, а пользователи не успеют заскучать и уйти. Вот и вся наука, а то сидят, блядь, думают, что магия какая-то!