Critical CSS

Критический CSS

CSS-стили только для первого экрана, вставленные инлайн.

Critical CSS — минимальный набор стилей, нужный для отрисовки контента в первом видимом экране (above the fold). Вставляется прямо в шапку HTML как <style>, чтобы браузер не ждал загрузки внешнего CSS-файла перед первой отрисовкой.

Остальной CSS загружается асинхронно через rel="preload" с onload. Так выигрываем 200–500 мс к LCP и FCP на типичных страницах. Размер инлайн-блока — обычно 4–14 КБ (один TCP-сегмент).

<head>
<!-- Inline критический CSS для первого экрана -->
<style>
  body { font-family: system-ui; margin: 0; }
  .hero { padding: 48px 24px; background: #faf9f5; }
  .hero h1 { font-size: 48px; line-height: 1.1; }
</style>

<!-- Остальной CSS — async -->
<link rel="stylesheet" href="/main.css" media="print" onload="this.media='all'">
Critical CSS: вшитый в HTML минимальный CSS для первого экрана. Главный приём ускорения LCP/FCP
Пример из практики

Главная страница pawetta.com: ~4 КБ критичного CSS встроены инлайн, остальные 108 КБ pages.css грузятся через preload — LCP стал 1,4 с вместо 2,1 с.

Главная ловушка инлайна — поддержка. Critical CSS привязан к конкретной вёрстке первого экрана, и стоит сменить шаблон шапки или баннер, как встроенный блок устаревает: на странице появляется FOUC (мелькание нестилизованного контента) или, наоборот, видимый сдвиг при подгрузке основного файла, что бьёт уже по CLS. Поэтому критический CSS не пишут руками раз и навсегда, а пересобирают на каждом деплое инструментами вроде Critical, Penthouse или критикал-плагинов сборщика, прогоняя их на нужных вьюпортах.

Второй подвох — асинхронная загрузка остального CSS. Трюк с preload + onload (переключение rel на stylesheet после загрузки) требует noscript-фолбэка, иначе при выключенном JS страница останется без полных стилей. И инлайн нельзя кэшировать отдельно: эти 4–14 КБ браузер тянет с каждым HTML-документом заново, так что раздувать блок выше одного TCP-сегмента (~14 КБ) контрпродуктивно — выигрыш в первой отрисовке съедается лишним весом ответа и ростом TTFB на медленном сервере.

Что
Стили above the fold

Минимальный набор правил для отрисовки видимой части страницы без обращения к внешнему файлу.

Как
Инлайн в head

Встраивается тегом в HTML, а полный CSS грузится асинхронно через preload с onload-переключением на stylesheet.

Зачем
Быстрее LCP и FCP

Убирает render-blocking-запрос к CSS из критического пути, выигрывая 200–500 мс к первой отрисовке.

Critical CSS разбивает доставку стилей на два потока — мгновенный для первого экрана и отложенный для остального.