Заявка
Mobile · CWV

DNS Prefetch

rel=dns-prefetch · Предварительное DNS-разрешение

DNS Prefetch — это подсказка браузеру заранее выполнить DNS-разрешение для сторонних доменов через тег . Ускоряет подключение к внешним ресурсам и улучшает загрузку страницы.

DNS Prefetch — это директива в HTML, которая просит браузер заранее определить IP-адрес указанного домена, пока пользователь ещё читает страницу. Что это значит на практике: браузер не ждёт момента запроса к стороннему серверу, а разрешает его адрес заблаговременно через тег <link rel=dns-prefetch>.

Работает подсказка на страницах, которые тянут ресурсы с внешних доменов: шрифты Google Fonts, аналитику, CDN, виджеты чатов. DNS-разрешение занимает от 20 до 120 мс на каждый новый хост, и ранний DNS-запрос убирает эту задержку из критического пути. Проверить эффект можно во вкладке Network в DevTools по колонке DNS Lookup.

§ 01Зачем нужен

Каждое подключение к новому домену начинается с DNS-разрешения: браузер переводит имя хоста в IP-адрес. Пока адрес не получен, соединение не открывается и ресурс не грузится. Предварительное разрешение доменов запускает этот шаг заранее, ещё до того как парсер дойдёт до тега <script> или <img> со сторонним источником. Выигрыш заметен на мобильных сетях, где задержка DNS выше из-за нестабильного соединения. Для чего нужно: сократить время до первого байта от внешнего ресурса без изменения самого кода загрузки.

§ 02Как настраивается

Тег ставится в <head> документа, по одной строке на каждый домен: <link rel=dns-prefetch href=//fonts.googleapis.com>. Указывается только протокол и хост, без пути. Порядок размещения — как можно выше, до подключения стилей и скриптов. Для доменов, к которым точно будет обращение в ближайшие миллисекунды, эта подсказка браузеру часто дополняется тегом <link rel=preconnect>, который делает ещё и TCP-рукопожатие с TLS. Комбинация preconnect плюс dns-prefetch как запасной вариант покрывает и старые браузеры.

Что меняется после внедрения

TTFB стороннего домена −180мс — Медиапортал о финансах на WordPress с 12 внешними доменами (шрифты, аналитика, CDN видео) добавил dns-prefetch для fonts.googleapis.com и player.vimeo.com. Время до подключения к сторонним хостам сократилось на 180 мс за 3 недели. Замер через WebPageTest и CrUX-75th.

Замер эффекта

LCP 3.1 → 2.6 c — B2B SaaS-лендинг на Next.js подгружал чат Intercom и Segment с чужих доменов. Команда прописала dns-prefetch и preconnect для 4 ключевых хостов в head. LCP упал с 3.1 до 2.6 с за 4 недели, поле CrUX позеленело. Динамика по PSI и GA4 Web Vitals.

§ 03Где смотреть результат

Откройте DevTools, вкладку Network, и наведите курсор на строку стороннего ресурса — во всплывающей подсказке видно фазы Queueing, DNS Lookup, Initial connection. Если ранний DNS-запрос отработал, значение DNS Lookup у ресурса будет близко к нулю: адрес уже в кэше. WebPageTest показывает то же самое на waterfall-диаграмме отдельным цветом для DNS. PageSpeed Insights напрямую этот механизм ускорения подключения не измеряет, но его эффект отражается на метрике LCP, если внешний домен отдаёт ключевой контент.

§ 04Подводные камни

Список доменов раздувать нельзя. Браузер выполняет разрешение параллельно, и десяток лишних хостов отнимает ресурсы у по-настоящему нужных запросов. Ставьте resource hints только на домены, к которым обращение гарантировано. Второй момент: для домена, который уже указан в preconnect, дублировать его в dns-prefetch избыточно на современных браузерах. Отличается ситуация с приватностью — предзагрузка DNS раскрывает провайдеру список сторонних хостов ещё до клика. И работает подсказка как рекомендация: браузер вправе её проигнорировать при нехватке ресурсов.

Частые ошибки
01
Подмена preconnect тегом dns-prefetch. dns-prefetch решает только DNS-имя, а preconnect ещё поднимает TCP и TLS-соединение. Для критичных доменов ставят слабую подсказку — экономия падает с 200 мс до 20 мс, ускорение теряется. Как правильно: Используйте preconnect для критичных доменов, а dns-prefetch как fallback для старых браузеров. Комбинируйте оба тега.
02
Прелоад десятков доменов подряд. Каждая подсказка тратит ресурсы браузера на параллельные DNS-запросы. При 20+ доменах соединения конкурируют за сеть, и загрузка реально критичных ресурсов замедляется — LCP на мобильном 4G растёт. Как правильно: Оставьте 4–6 доменов, которые реально грузятся на первом экране. Удалите подсказки для редких сторонних скриптов.
03
Оценка эффекта в Chrome DevTools на Wi-Fi. На быстром десктопе DNS-резолв занимает миллисекунды, и выигрыш незаметен. Реальный эффект виден только на мобильном 4G с холодным DNS — данные берут из CrUX за 28 дней, а не из разовой сессии. Как правильно: Замеряйте влияние на CrUX и WebPageTest с мобильным профилем 4G. Сравнивайте p75 до и после внедрения.
Часто спрашивают

DNS Prefetch — частые вопросы

DNS Prefetch простыми словами — что это и зачем?

+

DNS Prefetch — это подсказка браузеру заранее выполнить DNS-разрешение для сторонних доменов, пока страница ещё загружается. Прописывается тегом <link rel='dns-prefetch' href='//example.com'> в секции <head>. Экономит от 20 до 120 мс на каждом внешнем домене — шрифтах, аналитике, CDN.

Браузер видит подсказку и заранее отправляет ранний DNS-запрос к указанному домену, преобразуя имя в IP до того, как понадобится сам ресурс. Когда очередь доходит до загрузки скрипта или картинки, адрес уже в кэше. Поддержка есть в Chrome, Firefox, Safari и Edge.

Preconnect делает больше: помимо DNS выполняет TCP-подключение и TLS-рукопожатие, экономя до 300 мс. Предзагрузка DNS покрывает только этап разрешения имени и дешевле по ресурсам. Практика: preconnect на 2–3 критичных домена, а ранний DNS-запрос — на остальные внешние адреса.

Добавьте в <head> строку <link rel='dns-prefetch' href='//fonts.googleapis.com'> для каждого стороннего домена. Собрать список доменов помогает вкладка Network в DevTools. Ставьте подсказки максимально высоко в коде — до подключения CSS и скриптов, иначе эффект теряется.

Косвенно да: механизм ускорения подключения снижает задержку внешних ресурсов и улучшает LCP — одну из метрик Core Web Vitals, входящих в факторы Google с 2021 года. Прямого буста в выдаче тег не даёт, но ускоряет отрисовку. По опыту GUSAROV, эффект заметнее на сайтах с 5+ сторонними доменами.

Не нашли ответ?

Спросите Андрея Гусарова — отвечаю в течение 1-2 рабочих дней.

Нажимая, вы соглашаетесь с обработкой данных.