БесплатноБесплатный прототип ключевой страницы и черновик ТЗ при старте проекта

Критический CSS и устранение блокирующих ресурсов

Критический CSS и устранение блокирующих ресурсов в 1С-Битрикс: ускорение рендеринга и Core Web Vitals

Пользователь кликнул по ссылке и первые полторы секунды смотрит на белый экран. Ничего не сломано — просто браузер честно ждёт, пока загрузится тяжёлый файл стилей, прежде чем нарисовать хоть что-то. Эти секунды пустоты стоят вам отказов, конверсии и позиций: половина посетителей уходит, если контент не появился быстро, а поисковики учитывают скорость в ранжировании.

Разберёмся, откуда берётся эта задержка и как её убрать: что такое блокирующие ресурсы, как работает критический CSS, как правильно откладывать стили и скрипты и какие штатные инструменты 1С-Битрикс это закрывают. Тема — часть большой работы по производительности, которую мы ведём при аудите и оптимизации 1С и связанных систем.

Коротко

  • Белый экран в начале загрузки — это блокирующие рендеринг CSS и синхронные скрипты в head.
  • Критический CSS встраивают в HTML, чтобы первый экран рисовался сразу, а остальной CSS грузился асинхронно.
  • Некритичным скриптам добавляют defer или async, чтобы они не тормозили отрисовку.
  • Битрикс закрывает многое из коробки: минификация, объединение, композитный сайт и кэш.

Почему страница «белая» первые секунды

Задержка первой отрисовки — не «медленный интернет» и не «тяжёлый сервер» в общем смысле. Чаще всего это конкретный технический эффект: браузер получил HTML, но не может ничего показать, потому что в разметке есть ресурсы, которые он обязан обработать до отрисовки. Пока эти ресурсы грузятся и парсятся, экран остаётся пустым.

Проблема усугубляется на мобильных: слабый процессор дольше разбирает большой CSS и JS, а медленная сеть дольше их качает. Именно на мобильных потери от блокирующих ресурсов максимальны, а мобильный трафик для большинства магазинов — основной. Поэтому оптимизацию первого экрана всегда меряют в первую очередь на мобильном профиле.

Как браузер строит страницу

Чтобы понять, что блокирует рендер, полезно увидеть, как браузер вообще собирает страницу. Упрощённо цепочка такая: браузер парсит HTML и строит дерево DOM; параллельно из CSS строит дерево стилей CSSOM; из DOM и CSSOM собирает дерево отрисовки и только потом рисует пиксели на экране.

Ключевой момент: браузер не может отрисовать страницу без CSSOM, а CSSOM не готов, пока не загружен и не разобран весь CSS, подключённый в head. Синхронные скрипты в head ещё хуже — они останавливают парсинг HTML до своего выполнения. Отсюда и берутся два врага скорости: блокирующий CSS и блокирующий JS.

Как задача превращается в результат Задачачто решаемПодходкак делаемРеализацияна 1С-БитриксПроверкаметрики, тестыРезультатэффект для бизнеса
Схема: любая доработка проходит путь от постановки задачи к реализации на 1С-Битрикс и проверке по метрикам — важен измеримый результат, а не факт правки.

Что такое блокирующие ресурсы

Render-blocking ресурсы — это файлы, которые браузер обязан обработать до первой отрисовки. Их два типа, и с каждым работают по-своему.

РесурсПочему блокируетРешение
CSS в headБез CSSOM нет отрисовкиКритический CSS инлайном + асинхронная загрузка остального
Синхронный JS в headОстанавливает парсинг HTMLdefer / async, перенос в конец body
Внешние шрифтыЖдём загрузки, текст невидимfont-display: swap, предзагрузка
Импорты внутри CSSЦепочка загрузокУбрать @import, собрать в один файл

Цель не в том, чтобы удалить эти ресурсы (стили и скрипты нужны), а в том, чтобы разорвать их блокировку рендера: критичное для первого экрана — сразу и минимально, всё остальное — без задержки отрисовки. Дальше разберём оба приёма.

Критический CSS: идея и польза

Критический CSS (critical CSS, above-the-fold CSS) — это выделенный минимальный набор стилей, нужный ровно для отрисовки видимой части страницы: шапки, первого экрана, основного контейнера. Этот набор встраивают прямо в HTML внутри тега style в head. Тогда браузер получает всё необходимое для первого экрана вместе с самим HTML и рисует его немедленно, не дожидаясь загрузки полного файла стилей.

Полный CSS при этом никуда не девается — он подгружается асинхронно и применяется к остальной части страницы по мере прокрутки. Выигрыш в том, что момент «пользователь увидел контент» наступает почти сразу, а не после скачивания сотен килобайт стилей. Для интернет-магазина, где первый экран — это часто главный оффер или карточка товара, эффект особенно заметен.

Держите критический CSS маленьким: его смысл в скорости, поэтому в него включают только то, что видно на первом экране. Раздутый inline-CSS сам становится тормозом — правило «минимум для above-the-fold» здесь важнее полноты.

Как выделить критический CSS

Определить, какие именно стили критичны, вручную для сложного сайта тяжело и недолговечно — при каждом изменении вёрстки набор меняется. Поэтому подход зависит от масштаба.

  1. Определите ключевые шаблоны. Главная, каталог, карточка товара — у каждого свой первый экран и свой критический CSS.
  2. Сгенерируйте автоматически. Инструменты сборки анализируют, какие правила применяются к видимой области, и выделяют их.
  3. Встройте инлайном. Полученный набор помещается в style в head шаблона.
  4. Обновляйте с релизом. Критический CSS пересобирается при изменениях вёрстки, а не живёт вручную.

Автоматизация здесь — не роскошь, а необходимость: ручной критический CSS устаревает на первом же изменении дизайна. Встраивание генерации в процесс сборки и деплоя снимает эту проблему; как выстроить такой конвейер, мы разбираем в статье про CI/CD и деплой на Битрикс.

Асинхронная загрузка остального CSS

После того как критический CSS встроен, полный файл стилей нужно загрузить так, чтобы он не блокировал рендер. Приём стандартный: ссылку на стили подключают с загрузкой в неблокирующем режиме, а применение включают после загрузки. Технически это делают через rel="preload" с последующим переключением на rel="stylesheet" либо через media-трюк с переключением после onload.

Что важно учесть:

defer, async и порядок скриптов

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

АтрибутКогда выполняетсяПорядокДля чего
deferПосле парсинга HTMLСохраняетсяОсновные скрипты с зависимостями
asyncСразу по загрузкеНе гарантированНезависимые скрипты (аналитика)
без атрибута в headНемедленно, блокируя—Избегать для некритичного

Практическое правило: большинству скриптов подходит defer — он откладывает выполнение и сохраняет порядок, что безопасно для зависимостей. async — для полностью независимых скриптов вроде счётчиков. Всё, что не нужно для первого экрана, убирают из блокирующего head. Главное — проверить, что отложенный скрипт действительно не участвует в отрисовке видимой области, иначе появятся сдвиги контента.

Штатные инструменты 1С-Битрикс

Хорошая новость: значительную часть работы 1С-Битрикс закрывает из коробки, без самописных решений. В настройках оптимизации есть готовые механизмы, которые стоит включить и проверить в первую очередь.

Эти опции дают быстрый выигрыш почти без риска, если после включения проверить ключевые страницы. Тонкую же настройку — критический CSS, асинхронный CSS, ручную работу с порядком — делают уже на уровне шаблона проекта. Как устроена архитектура таких доработок в платформе, полезно понимать из статьи про D7 в Битрикс — тот же принцип «делать правильно средствами платформы» работает и во фронтенде.

Композитный сайт и кэширование

Отдельный мощный механизм платформы — композитный сайт. Он разделяет страницу на статическую часть (шапка, каркас, повторяющиеся блоки) и динамическую (цена клиента, корзина, персональные данные). Статика кэшируется и отдаётся пользователю почти мгновенно, а динамические блоки догружаются после первой отрисовки. Для скорости первого экрана это огромный выигрыш: пользователь видит страницу сразу, ещё до того, как отработала вся серверная логика.

Композитный сайт хорошо сочетается с критическим CSS: статическую версию с уже встроенными критическими стилями браузер рисует за доли секунды. При этом важно грамотно разделить, что кэшируется, а что персонально, — иначе можно показать чужую цену или устаревшие данные. Настройку композита и кэширования мы закладываем в основу производительности при автоматизации на 1С, когда сайт тесно связан с учётной системой.

Шрифты и сдвиги макета

Шрифты — недооценённый источник и задержек, и сдвигов. Пока внешний шрифт грузится, браузер либо прячет текст (пустое место вместо контента), либо показывает системный, а потом резко подменяет — и макет прыгает. Оба сценария вредят: первый бьёт по скорости, второй — по метрике сдвигов.

Влияние на Core Web Vitals

Вся эта работа — не ради абстрактной «скорости», а ради конкретных метрик, которые видит и пользователь, и поисковик. Core Web Vitals прямо реагируют на устранение блокирующих ресурсов.

Core Web Vitals — фактор ранжирования и поведения: быстрый сайт лучше индексируется, дольше удерживает и выше конвертирует. Поэтому оптимизация загрузки окупается сразу по двум фронтам — SEO и продажам.

Частые ошибки

Чек-лист оптимизации

  1. Замер сделан. Ключевые страницы прогнаны через аудит на мобильном профиле, блокирующие ресурсы выявлены.
  2. Штатная оптимизация включена. Объединение и минификация CSS/JS, перенос скриптов вниз.
  3. Критический CSS встроен. Для главной, каталога и карточки, сгенерирован автоматически и обновляется с релизом.
  4. Остальной CSS асинхронный. Полный файл грузится неблокирующе, с fallback без JS.
  5. Скрипты с defer/async. Некритичный JS вынесен из блокирующего head.
  6. Композитный сайт. Статика отдаётся мгновенно, динамика отделена и не кэширует персональное.
  7. Шрифты оптимизированы. font-display: swap, предзагрузка основного, минимум начертаний.
  8. Метрики сверены. LCP, FCP, CLS, INP измерены до и после, эффект подтверждён.

Вывод

Белый экран в начале загрузки — это не судьба, а следствие конкретных блокирующих ресурсов, которые можно и нужно убрать. Критический CSS даёт браузеру всё для первого экрана сразу, асинхронная загрузка стилей и defer-скрипты снимают блокировку рендера, а композитный сайт отдаёт статику почти мгновенно.

1С-Битрикс закрывает значимую часть задачи штатными средствами — начните с них, замерьте эффект, а дальше добавляйте критический CSS и тонкую настройку загрузки. Работайте итеративно, всегда сверяясь с Core Web Vitals, — и вы получите сайт, который появляется мгновенно, лучше ранжируется и выше конвертирует, особенно на мобильных, где это решает.

Частые вопросы

Что такое блокирующие ресурсы простыми словами?

Блокирующие ресурсы (render-blocking) — это файлы CSS и синхронные скрипты в head, которые браузер обязан загрузить и обработать до того, как покажет хоть что-то на экране. Пока грузится большой файл стилей, пользователь видит белую страницу. Каждый такой ресурс откладывает момент первой отрисовки, поэтому цель оптимизации — сократить их число и объём, а всё некритичное загружать без блокировки рендера.

Что такое критический CSS и зачем он нужен?

Критический CSS — это минимальный набор стилей, необходимый для отрисовки видимой части страницы (первого экрана). Его встраивают прямо в HTML в тег style, чтобы браузер отрисовал первый экран сразу, не дожидаясь загрузки полного файла стилей. Остальной CSS подгружается асинхронно и применяется по мере прокрутки. Это резко ускоряет момент, когда пользователь видит содержимое, и улучшает метрику LCP.

Как отложить загрузку JavaScript без поломки функциональности?

Скриптам, которые не нужны для первой отрисовки, добавляют атрибут defer или async. Defer откладывает выполнение до полной загрузки HTML и сохраняет порядок скриптов — это безопасный выбор для большинства случаев. Async запускает скрипт сразу по загрузке, без гарантии порядка, — подходит независимым скриптам вроде аналитики. Главное — убедиться, что отложенный скрипт не нужен для отрисовки первого экрана, иначе появятся сдвиги.

Есть ли в 1С-Битрикс встроенные инструменты для этого?

Да. Битрикс умеет объединять и минифицировать CSS и JS через настройки оптимизации, переносить скрипты в конец страницы, откладывать загрузку и работать с композитным сайтом, который отдаёт статическую версию страницы почти мгновенно. Эти механизмы закрывают значимую часть задачи из коробки, а критический CSS и тонкую настройку загрузки чаще делают уже на уровне шаблона проекта.

Как это связано с Core Web Vitals?

Напрямую. Устранение блокирующих ресурсов и критический CSS в первую очередь улучшают LCP (время отрисовки главного контента) и FCP (первую отрисовку). Правильная работа со шрифтами и резервированием места под элементы снижает CLS (сдвиги макета), а вынос тяжёлых скриптов из потока рендера помогает INP (отзывчивости). Core Web Vitals — это фактор ранжирования и удобства, поэтому оптимизация загрузки работает и на SEO, и на конверсию.

Не сломает ли объединение файлов вёрстку?

Может, если делать бездумно. При объединении CSS важен порядок правил (каскад), иначе стили перебьют друг друга; при объединении JS — порядок зависимостей. Поэтому объединение включают постепенно и обязательно проверяют ключевые страницы: каталог, карточку, корзину, оформление. Композитный кэш после изменений сбрасывают и прогревают. При аккуратном подходе объединение безопасно и заметно уменьшает число запросов.

Обязательно ли автоматизировать сборку критического CSS?

Для сайта с несколькими типами страниц — да, ручная поддержка критического CSS быстро устаревает при каждом изменении вёрстки. Его генерируют автоматически на этапе сборки для ключевых шаблонов (главная, каталог, карточка) и обновляют вместе с релизом. Для небольшого сайта с одним-двумя шаблонами можно обойтись и разовой ручной выборкой, но следить за её актуальностью придётся вручную.

С чего начать, если сайт грузится медленно?

Начните с замера: прогоните ключевые страницы через инструменты аудита производительности и посмотрите, что именно блокирует рендер и какой ресурс тяжелее всего. Часто быстрый выигрыш дают три вещи: включение композитного сайта, минификация и объединение CSS/JS штатными средствами и добавление defer скриптам. Критический CSS — следующий шаг для дальнейшего ускорения первого экрана. Оптимизацию ведут итеративно, сверяясь с метриками.

Поделиться:

Сайт грузится медленно и теряет клиентов?

Проведём аудит производительности, внедрим критический CSS и композит, уберём блокирующие ресурсы. Приведём Core Web Vitals в зелёную зону.

Аудит и оптимизация 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года ускоряем сайты на 1С-Битрикс: критический CSS, композитный сайт, кэширование и Core Web Vitals для магазинов с реальной нагрузкой.

← Все статьи блога