Preconnect

Материал из Энциклопедия интернет-маркетинга MarketWiki

Preconnect - это механизм веб-разработки, который указывает браузеру заранее установить соединение с внешним доменом (DNS-разрешение, TCP-рукопожатие, TLS-согласование) до того, как будет запрошен ресурс, что сокращает время загрузки страницы.

Технология используется в SEO и оптимизации производительности для ускорения загрузки ресурсов, размещённых на сторонних доменах: шрифтов (Google Fonts), скриптов аналитики (Google Analytics 4, Яндекс Метрика), API, CDN, изображений. Например, сайт, использующий шрифты от Google Fonts, добавляет <link rel="preconnect" href="https://fonts.googleapis.com">, чтобы браузер установил соединение с этим доменом параллельно загрузке HTML, а не после того, как парсер дойдёт до CSS с импортом шрифтов.

Preconnect является эволюцией более ранней техники prefetch и занимает промежуточное положение между dns-prefetch (только DNS-разрешение) и preload (загрузка контента). В 2026 году preconnect считается стандартной практикой для ускорения загрузки страниц, особенно критически важной для Core Web Vitals и мобильных устройств с медленным соединением.

Кратко

[править]

Preconnect - это HTML-подсказка браузеру о необходимости заранее установить соединение с указанным доменом. Браузер выполняет DNS-разрешение, TCP-рукопожатие и TLS-согласование до момента фактического запроса ресурса.

Что такое Preconnect

[править]

Preconnect - это HTML-атрибут (тип rel), который сообщает браузеру о необходимости заранее установить соединение с указанным доменом. Процесс включает DNS-разрешение (преобразование домена в IP-адрес), TCP-рукопожатие (установление соединения) и, при использовании HTTPS, TLS-согласование (шифрование). В отличие от DNS-prefetch, который выполняет только DNS-разрешение, preconnect выполняет полный цикл установки соединения, что экономит время при первом запросе к внешнему ресурсу.

Как работает Preconnect

[править]
  1. Объявление. В секции <head> добавляется <link rel="preconnect" href="https://cdn.example.com">.
  2. Ранняя инициализация. Браузер, обнаружив preconnect, начинает установку соединения с указанным доменом параллельно с загрузкой HTML и CSS.
  3. Экономия времени. К моменту, когда HTML-парсер доходит до запроса ресурса (например, шрифта или скрипта), соединение уже установлено, и загрузка начинается немедленно.
  4. Разница в скорости. Без preconnect установка соединения занимает 100-300 мс (на медленных сетях - до 1 секунды), с preconnect это время исключается из критического пути загрузки.

Когда использовать Preconnect

[править]
Сценарии использования preconnect
Сценарий Применение
Сторонние шрифты Google Fonts, Typekit, кастомные шрифты с CDN
Скрипты аналитики Google Analytics 4, Яндекс Метрика
CDN для изображений Cloudinary, Imgix, собственные CDN
API При запросах к внешним API (платёжные шлюзы, карты)
Медиаконтент Видео-хостинги (YouTube, Vimeo), аудио-сервисы

Преимущества Preconnect

[править]
  • Ускорение загрузки сторонних ресурсов: сокращает время первого запроса к внешнему домену на 100-500 мс.
  • Улучшение Core Web Vitals: положительно влияет на LCP (крупные изображения) и FCP (первый контент).
  • Особенная эффективность на мобильных устройствах: на мобильных сетях установка соединения занимает больше времени, экономия становится критической.
  • Низкий оверхед: preconnect не загружает данные, только устанавливает соединение, что не расходует лишний трафик.

Недостатки

[править]
Недостатки preconnect
Недостаток Описание
Избыточное использование Preconnect для каждого внешнего домена может замедлять загрузку, так как браузер устанавливает соединения параллельно, отнимая ресурсы
Загрузка неиспользуемых соединений Если указан домен, с которого в итоге не будет запросов, время затрачено впустую
Необходимость crossorigin для шрифтов При preconnect для шрифтов с другого домена требуется указать атрибут crossorigin, иначе соединение не будет использовано

Preconnect vs DNS-prefetch vs Preload

[править]
Сравнение техник предварительной загрузки
Техника Что делает Когда использовать
DNS-prefetch Только DNS-разрешение Для доменов, с которых будут ресурсы, но соединение можно установить позже
Preconnect DNS + TCP + TLS Для критических доменов, где важна максимальная скорость первого запроса
Preload Загрузка ресурса с высоким приоритетом Для конкретных файлов, нужных на текущей странице (шрифты, LCP-изображения)

Примеры использования

[править]

Предзагрузка шрифтов Google Fonts:

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">

Предзагрузка аналитики и CDN:

<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<link rel="preconnect" href="https://api.metrika.yandex.ru">

Оптимизация Preconnect

[править]
Рекомендации по использованию preconnect
Рекомендация Пояснение
Использовать только для критических доменов Не более 3-5 preconnect на страницу
Указывать crossorigin для шрифтов Без crossorigin браузер установит соединение, но не сможет его использовать для шрифтов
Размещать в <head> Preconnect должен быть как можно выше в HTML, до загрузки других ресурсов
Тестировать влияние Использовать Lighthouse или WebPageTest для измерения улучшений

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

[править]

Preconnect напрямую влияет на метрики, связанные с загрузкой контента:

  • LCP (Largest Contentful Paint): если крупное изображение или заголовок используют сторонний шрифт или CDN, preconnect ускоряет их загрузку.
  • FCP (First Contentful Paint): ускорение загрузки критических шрифтов и CSS улучшает время появления первого контента.
  • INP (Interaction to Next Paint): косвенное влияние через ускорение загрузки скриптов, отвечающих за интерактивность.

Часто задаваемые вопросы

[править]

Для каких ресурсов следует использовать preconnect?

[править]

Preconnect следует использовать для критических сторонних доменов, с которых загружаются ресурсы, влияющие на отображение первого экрана: шрифты, скрипты аналитики, CDN с LCP-изображениями, API для критических данных.

Чем preconnect отличается от dns-prefetch?

[править]

DNS-prefetch выполняет только перевод домена в IP-адрес. Preconnect выполняет полное установление соединения (DNS + TCP + TLS), что позволяет начать передачу данных быстрее, но требует больше ресурсов браузера.

Можно ли использовать preconnect для всех внешних доменов на странице?

[править]

Не рекомендуется. Чрезмерное использование preconnect (более 5-6 доменов) может замедлить загрузку, так как браузер ограничен в количестве параллельных соединений. Оптимально использовать preconnect только для 3-5 критических доменов.

Как проверить, что preconnect работает?

[править]

В Chrome DevTools на вкладке Network можно добавить колонку Connection ID - при работающем preconnect запрос к ресурсу будет использовать уже установленное соединение (Connection ID будет совпадать с соединением, установленным preconnect).

Нужен ли crossorigin для preconnect шрифтов?

[править]

Да, для шрифтов, загружаемых с другого домена, обязательно указывать атрибут crossorigin. Без него браузер установит соединение, но не сможет его использовать для загрузки шрифтов, и preconnect окажется бесполезным.

Связанные термины

[править]