БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Предзагрузка и приоритизация ресурсов (preload, prefetch)

Предзагрузка и приоритизация ресурсов preload, prefetch, preconnect на 1С-Битрикс для ускорения Core Web Vitals

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

Разберём resource hints — preload, prefetch, preconnect — предметно: чем они отличаются, что чем помечать, как не навредить избыточной предзагрузкой и как применить всё это в шаблоне сайта на 1С-Битрикс в связке с композитом и кэшем. Если скорость каталога — системная задача, её решают через аудит и оптимизацию 1С, а resource hints — один из точных инструментов внутри неё.

Коротко

  • Preload грузит критичное для текущей страницы раньше; prefetch готовит ресурсы следующего перехода в фоне.
  • Preconnect заранее устанавливает соединение с нужным внешним доменом и экономит сотни миллисекунд.
  • Помечайте preload два-четыре ресурса (LCP-картинка, шрифт, критический CSS), иначе замедлите первый экран.
  • Resource hints — тонкая настройка поверх оптимизированной страницы, а не замена уменьшению числа ресурсов.

Зачем управлять приоритетом ресурсов

Восприятие скорости определяется не полным временем загрузки, а тем, как быстро появляется первый экран и главный контент. Пользователь не считает килобайты — он смотрит, отрисовался ли заголовок, картинка, кнопка. Метрики Core Web Vitals, которые учитывает поиск, тоже про это: LCP измеряет отрисовку главного элемента, CLS — стабильность вёрстки, INP — отзывчивость на действия.

Проблема в том, что браузер по умолчанию не знает ваших приоритетов. Он обнаруживает ресурсы по мере разбора HTML и CSS и назначает им приоритеты эвристически. Иногда критичное изображение первого экрана он находит поздно — уже после второстепенных скриптов. Resource hints позволяют вмешаться и сказать: «вот это важно сейчас, а это — потом». Это не магия ускорения, а перераспределение уже имеющейся пропускной способности в пользу того, что видит пользователь.

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

Чтобы осмысленно расставлять приоритеты, полезно понимать порядок работы браузера. Упрощённо загрузка идёт так:

  1. Получение HTML. Браузер запрашивает и начинает разбирать документ сверху вниз.
  2. Обнаружение ресурсов. По мере разбора находит ссылки на CSS, скрипты, изображения, шрифты.
  3. Назначение приоритетов. CSS и синхронные скрипты — высокий приоритет, изображения ниже, шрифты обнаруживаются только после разбора CSS.
  4. Загрузка с учётом канала. Ресурсы качаются параллельно, но канал ограничен, и приоритеты определяют очередь.
  5. Отрисовка. Как только критичное готово, браузер рисует первый экран.

Слабое место — шаг обнаружения. Шрифт заголовка браузер не увидит, пока не разберёт CSS; LCP-изображение, вставленное фоном или глубоко в разметке, тоже находится поздно. Resource hints закрывают именно этот разрыв: сообщают о критичном ресурсе заранее, ещё до того, как браузер добрался бы до него сам.

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

Resource hints: обзор инструментов

Resource hints — это набор тегов <link> с разными значениями rel, каждый под свою задачу. Держите в голове их роли, чтобы не путать.

ХинтЧто делаетПриоритетКогда применять
preloadГрузит ресурс текущей страницы раньшеВысокийLCP-картинка, шрифт, критический CSS
prefetchГрузит ресурс будущей страницы в фонеНизкийВероятный следующий переход
preconnectЗаранее соединяется с доменомВнешние шрифты, CDN, платёжка
dns-prefetchТолько DNS-запрос к доменуЗапасной вариант для preconnect
prerender / Speculation RulesПредрендер следующей страницыНизкийОчень вероятный переход

Ключевое различие — временное: preload и preconnect работают на текущую страницу, prefetch и prerender — на следующую. Смешение приводит к типовым ошибкам: preload того, что не нужно сейчас, тормозит первый экран, а prefetch критичного ресурса не помогает вовсе. Дальше разберём главные хинты по отдельности.

Preload: ускоряем текущую страницу

Preload — самый мощный и самый опасный хинт. Он повышает приоритет ресурса, заставляя браузер загрузить его раньше, чем он обнаружил бы сам. Идеальные кандидаты — те критичные ресурсы, которые браузер находит поздно: основной шрифт (обнаруживается после CSS), LCP-изображение (если оно фоновое или глубоко в разметке), критический CSS.

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

Тест на preload: прежде чем пометить ресурс, спросите — задерживает ли он отрисовку первого экрана и обнаруживает ли его браузер поздно? Если на оба вопроса «да» — кандидат. Если хоть один «нет» — preload не нужен.

Prefetch: готовим следующий переход

Prefetch решает другую задачу — ускорить не текущую страницу, а вероятный следующий переход. Браузер грузит указанный ресурс в фоне с низким приоритетом, когда канал свободен, и кладёт в кэш. Если пользователь перейдёт на предсказанную страницу, она откроется почти мгновенно.

Где prefetch уместен в интернет-магазине:

Важно не переусердствовать: prefetch всего подряд тратит трафик пользователя и канал впустую, особенно на мобильных. Предзагружают только то, переход куда действительно вероятен. Современная альтернатива — Speculation Rules API для более умного предугадывания навигации, но базовый prefetch остаётся простым и надёжным.

Preconnect и dns-prefetch

Обращение к внешнему домену — это скрытая задержка: браузеру нужно выполнить DNS-запрос, установить TCP-соединение и провести TLS-рукопожатие, прежде чем он получит первый байт. На это уходят сотни миллисекунд. Preconnect выполняет всю эту подготовку заранее, ещё до того, как ресурс реально понадобится.

Preconnect стоит ставить к доменам, с которых точно будет загрузка на первом экране: внешние шрифты, аналитика, CDN, платёжный виджет. Dns-prefetch — более лёгкий вариант, который делает только DNS-запрос; его используют как запасной для менее критичных доменов или для старых браузеров. Как и с preload, злоупотреблять нельзя: каждое установленное соединение расходует ресурсы, поэтому preconnect ограничивают двумя-тремя действительно нужными доменами. Про безопасное взаимодействие с внешними доменами и точками интеграции — в статье про REST, вебхуки и безопасность в Битрикс.

Шрифты, LCP-картинка и критический CSS

Три ресурса чаще всего выигрывают от предзагрузки, и на них стоит сфокусироваться в первую очередь.

Эти три оптимизации дают основной эффект на LCP и CLS — две из трёх ключевых метрик Core Web Vitals. Остальное (скрипты, изображения ниже первого экрана) обычно достаточно просто отложить, а не предзагружать.

Приоритизация без хинтов

Resource hints — не единственный способ управлять приоритетом. Часть работы делается атрибутами и порядком разметки, и это стоит применять до тонкой настройки хинтами.

Часто грамотная расстановка этих атрибутов решает большую часть задачи, а preload остаётся точечным дополнением для тех двух-трёх ресурсов, которые браузер всё равно находит поздно. Начинать стоит с наведения порядка в разметке и скриптах, а хинты добавлять сверху.

Применение на 1С-Битрикс

В 1С-Битрикс теги resource hints добавляются в <head>, который формируется в header.php шаблона сайта. Есть два пути: прописать хинты прямо в шаблоне или добавлять их программно через API страницы (объект работы с текущей страницей позволяет добавлять ресурсы и произвольный HTML в head).

Практическая последовательность:

  1. Определите критичные ресурсы. Через Lighthouse найдите LCP-элемент и ресурсы, тормозящие первый экран.
  2. Добавьте preload в head шаблона. Для шрифта первого экрана и LCP-изображения главных типов страниц.
  3. Инлайните критический CSS. Стили первого экрана — в head, полный CSS — отложенно.
  4. Настройте preconnect. К двум-трём внешним доменам, с которых точно грузятся ресурсы.
  5. Отложите некритичные скрипты. defer/async для аналитики, виджетов, второстепенной логики.

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

Связка с композитом и кэшем

Resource hints работают не в вакууме, а поверх системы кэширования 1С-Битрикс. Композитный сайт (composite) отдаёт статическую версию страницы почти мгновенно, а динамические блоки (корзина, персональная цена) догружаются отдельно. Предзагрузка расставляет приоритеты внутри этой быстрой статики, усиливая эффект.

Важно, чтобы одно не мешало другому: preload-теги должны попадать в композитную версию страницы, а не теряться при её формировании. Инфраструктура тоже играет роль — быстрый ответ сервера, HTTP/2 или HTTP/3 для параллельной загрузки, корректные заголовки кэширования. Как настроить инфраструктуру под скорость, разбираем в статье про хостинг и BitrixVM. Хинты дают максимум эффекта именно на уже быстром фундаменте: композит плюс кэш плюс приоритизация.

Как измерять результат

Предзагрузку нельзя настраивать вслепую — только по замерам. Инструменты и подход:

Главный принцип — измерение важнее интуиции. Preload не того ресурса или их избыток легко ухудшают LCP, и заметить это можно только по цифрам. Настроили — замерили — сравнили: только так предзагрузка приносит пользу, а не вред.

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

Чек-лист внедрения

  1. LCP-элемент найден. Через Lighthouse определён главный элемент первого экрана для каждого типа страниц.
  2. Критичное предзагружено. Preload для шрифта первого экрана и LCP-изображения, не более двух-четырёх ресурсов.
  3. Критический CSS инлайнится. Стили первого экрана в head, полный CSS отложен.
  4. Preconnect настроен. К двум-трём внешним доменам с гарантированной загрузкой.
  5. Некритичное отложено. Ленивая загрузка картинок, defer/async для скриптов.
  6. Prefetch по вероятным переходам. Предзагрузка следующего шага там, где переход действительно вероятен.
  7. Связка с композитом. Хинты попадают в кэшированную версию, инфраструктура быстрая.
  8. Результат измерен. LCP сравнён до и после, полевые данные отслеживаются.

Вывод

Предзагрузка и приоритизация ресурсов — это тонкая настройка, которая выигрывает последние сотни миллисекунд на первом экране. Preload грузит критичное для текущей страницы раньше, prefetch готовит вероятный переход, preconnect убирает задержку соединения с внешними доменами. Главное правило — точность: preload двух-четырёх действительно важных ресурсов, а не «всего подряд», иначе легко замедлить страницу вместо ускорения.

На 1С-Битрикс хинты добавляют в head шаблона и усиливают композитом и кэшем, а результат обязательно проверяют замерами LCP. Но помните главное: resource hints работают поверх уже оптимизированной страницы. Сначала уберите лишнее и сожмите ресурсы, а предзагрузку добавьте сверху — тогда она принесёт максимум пользы Core Web Vitals и реальному пользователю.

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

Чем отличается preload от prefetch?

Это два разных инструмента для разных задач. Preload говорит браузеру: «этот ресурс нужен для текущей страницы прямо сейчас, загрузи его с высоким приоритетом» — им помечают критичные шрифты, LCP-изображение, важный CSS. Prefetch говорит: «этот ресурс, скорее всего, понадобится на следующей странице, подгрузи его в фоне с низким приоритетом, когда будет свободно». Preload ускоряет текущую загрузку, prefetch — будущий переход. Путать их вредно: preload лишнего замедляет текущую страницу.

Что такое preconnect и когда он нужен?

Preconnect заранее устанавливает соединение с внешним доменом — выполняет DNS-запрос, TCP-рукопожатие и TLS — до того, как с него реально понадобится ресурс. Это экономит сотни миллисекунд при обращении к стороннему домену: шрифтам, аналитике, CDN, платёжному виджету. Preconnect полезен, когда вы точно знаете, что с домена будет загрузка, но злоупотреблять им нельзя: каждое лишнее соединение тратит ресурсы. Обычно достаточно preconnect к двум-трём действительно нужным доменам.

Как preload помогает Core Web Vitals?

Основной эффект — на метрику LCP (Largest Contentful Paint), то есть скорость отрисовки главного элемента экрана. Если это большое изображение или заголовок со шрифтом, preload заставляет браузер загрузить его раньше, не дожидаясь, пока он обнаружит ресурс в разметке. Правильный preload LCP-картинки и шрифта заметно улучшает LCP. Косвенно предзагрузка шрифтов снижает и CLS, убирая скачок текста при смене шрифта. Но preload — точечный инструмент: важно не «предзагрузить всё», а именно то, что тормозит первый экран.

Можно ли навредить сайту избыточным preload?

Да, и это частая ошибка. Preload повышает приоритет ресурса, забирая полосу у других. Если пометить preload десяток файлов, браузер начнёт грузить их все одновременно с высоким приоритетом, конкурируя за канал, и первый экран отрисуется медленнее, а не быстрее. Preload — это перераспределение приоритетов, а не «ускоритель всего». Помечать им стоит два-четыре действительно критичных ресурса: LCP-изображение, ключевой шрифт, критический CSS. Остальное браузер и так загрузит в разумном порядке.

Как всё это применить на 1С-Битрикс?

Теги link rel=preload/prefetch/preconnect добавляются в head шаблона сайта. В 1С-Битрикс head формируется в header.php шаблона и через API страницы: можно добавлять ресурсы и мета-теги программно. Критический CSS инлайнят в head, а основной подключают отложенно. Важно, чтобы предзагрузка работала в связке с композитным сайтом и кэшированием: composite отдаёт статику мгновенно, а preload расставляет приоритеты внутри неё. Часть оптимизаций делается на уровне шаблона, часть — настройкой ускорения сайта в ядре.

Нужно ли предзагружать шрифты?

Как правило, да — шрифты частая причина задержек и скачков текста. Браузер обнаруживает нужный шрифт только после разбора CSS, а к этому моменту проходит время. Preload ключевого шрифта (обычно основного начертания текста) заставляет загрузить его раньше и убирает «мигание» нестилизованного текста. Обязательно указывайте атрибут crossorigin для шрифтов и грузите только те начертания, что реально используются на первом экране, а не весь набор. Свойство font-display в CSS дополняет предзагрузку, управляя поведением до готовности шрифта.

Что важнее — preload или в целом меньше ресурсов?

В целом меньше ресурсов почти всегда важнее. Preload и prefetch — это тонкая настройка приоритетов поверх уже оптимизированной страницы, а не замена оптимизации. Если на странице десятки тяжёлых скриптов и неоптимизированных картинок, никакой preload не спасёт — сначала нужно убрать лишнее, сжать изображения, отложить некритичные скрипты. Предзагрузка даёт ощутимый эффект именно тогда, когда страница уже в разумной форме и остаётся выиграть последние сотни миллисекунд на первом экране.

Как проверить, что предзагрузка работает?

Смотрите на метрики и на водопад загрузки. В инструментах разработчика браузера (вкладка Network) видно приоритет и порядок загрузки ресурсов — preload-ресурсы должны идти раньше и с высоким приоритетом. Lighthouse и PageSpeed Insights показывают LCP и подсказывают, какой ресурс тормозит первый экран и стоит ли его предзагрузить. После добавления preload сравните LCP до и после: если метрика не улучшилась или ухудшилась, значит, предзагружен не тот ресурс или их слишком много. Измерение важнее интуиции.

Поделиться:

Хотите зелёные Core Web Vitals без потери функциональности?

Настроим предзагрузку критичных ресурсов, критический CSS, композит и кэш, оптимизируем изображения и скрипты. Замерим скорость до и после.

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

Редакция B2Bsite

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

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