Render-Blocking Resources (Блокирующие рендеринг ресурсы)
Почему CSS и JavaScript в <head> замедляют отрисовку страницы и как устранить блокирующие ресурсы для улучшения Core Web Vitals.
Render-blocking resources — это файлы стилей и скриптов, которые браузер обязан загрузить и обработать до начала отрисовки страницы. Они напрямую увеличивают First Paint и Largest Contentful Paint.
Что блокирует рендеринг
Главные виновники — синхронные ресурсы в <head>:
- Внешние таблицы стилей (<link rel="stylesheet">).
- Синхронные скрипты (<script src="…"> без defer или async).
- Вложенные @import в CSS.
Браузер приостанавливает построение страницы, пока не загрузит и не выполнит эти файлы, из-за чего пользователь видит белый экран дольше.
Как исправить CSS
Лучший способ — встроить критический CSS (стили для видимой области) в <style> и загрузить основной файл асинхронно:
<style>/* критический CSS */</style>
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="styles.css"></noscript>Медиа-запросы также помогают: файлы, предназначенные только для печати или больших экранов, не считаются блокирующими для основного рендера.
Как исправить JavaScript
Добавьте атрибут defer для скриптов, которые должны выполняться в порядке очереди после разбора HTML, или async для независимых (счётчики, аналитика). Пример:
<!-- defer – рекомендуется для большинства -->
<script src="app.js" defer></script>
<!-- async – для скриптов, не влияющих на DOM -->
<script src="analytics.js" async></script>Как обнаружить блокирующие ресурсы
Запустите PageSpeed Insights или Lighthouse и посмотрите рекомендацию «Устраните ресурсы, блокирующие отрисовку». В Chrome DevTools на вкладке Network можно увидеть красные полосы в водопаде, указывающие на блокировку.
Частые вопросы
Обсудим ваш проект?
Расскажите о целях и сайте — предложу формат работы и следующий шаг.