Что Такое DNS Lookup и Как Уменьшить Количество DNS-запросов?
access_time
hourglass_empty
person_outline

Что Такое DNS Lookup и Как Уменьшить Количество DNS-запросов?

DNS — элемент, который веб-мастера часто упускают из виду. Однако при правильной оптимизации он может значительно повысить скорость работы сайта и общую производительность. Итак, сегодня мы поговорим о том, что такое DNS lookup и как эта штука влияет на работу вашего сайта. Также мы расскажем, как уменьшить количество обращений к DNS, что, скорее всего, поможет вам улучшить производительность вашего ресурса.

Что Такое DNS Lookup?

DNS является фундаментом интернета. Точно так же, как адрес помогает нам избежать использования географических координат, так и доменное имя освобождает нас от необходимости запоминать IP-адреса.

Каждый домен сопоставлен с IP-адресом. Например, когда вы вводите google.com в адресную строку браузера, ваш интернет-провайдер запрашивает серверы имён, связанные с этим доменом. Без DNS вам бы пришлось вводить что-то вроде  216.58.212.110, чтобы попасть на сайт.

Процесс поиска и определения того, какой IP принадлежит тому или иному веб-сайту (домену) это и есть DNS lookup, DNS-поиск, или просмотр DNS.

Таким образом, прежде чем вы сможете просматривать и загружать все ресурсы с помощью браузера, необходимо выполнить DNS lookup для каждого домена, который предоставляет информацию на странице.

Однако lookup необязательно должен быть произведён для каждого ресурса. Например, когда вы делаете следующие HTTP-запросы:

  • http://hostinger-dev-2.xyz
  • http://hostinger-dev-2.xyz/wp-content/themes/veggie-lite/style.css
  • http://hostinger-dev-2.xyz/wp-content/plugins/mailchimp-for-wp/assets/js/forms-api.min.js
  • http://platform.linkedin.com/in.js
  • http://platform.twitter.com/widgets.js

Хотя вы сделали пять запросов, в примере мы видим всего три уникальных домена. Это значит, что ваш браузер выполняет только три DNS лукапа. 

  • http://hostinger-dev-2.xyz
  • http://platform.linkedin.com
  • http://platform.twitter.com

Обычно, когда вы посещаете веб-страницу, браузер запрашивает все ресурсы с DNS лукапами. Он должен дождаться завершения всех процессов, прежде чем браузер сможет что-либо загрузить.

Это может занять некоторое время, особенно на странице, где нужно выполнить много DNS лукапов. В результате время загрузки сайта может увеличиться.

Что это значит?

Загрузка сайта может повлиять не только на пользовательский опыт, но и на SEO.

Время загрузки страницы играет важную роль в удержании посетителей на сайте и снижении показателя отказов. Доказано, что 53% пользователей покидают сайт (англ), если он загружается дольше трёх секунд.

Согласно исследованию Google (англ), около 45% посетителей никогда не возвращаются на сайт, где столкнулись с негативным опытом использования. Время загрузки (англ) является одной из наиболее частых причин негативного опыта.

Скорость страницы также является одним из факторов ранжирования (англ) в Google. Низкая скорость загрузки может также повлиять на сканирование и индексацию (англ) веб-страниц. Вот почему скорость сайта очень важна для успешного присутствия в интернете.

Чтобы узнать, как ваш сайт выполняет DNS-поиск, и есть ли необходимость сократить количество DNS-просмотров, проведите тест веб-страницы (англ). Вот пример теста, который мы провели для сайта Longreads (англ).

Результаты Теста Сайта Longreads

Простые Способы Сократить Количество Просмотров DNS

Теперь, когда вы знаете, какую функцию выполняет DNS lookup, пришло время уменьшить количество DNS-запросов, чтобы повысить производительность вашего сайта.

1. Используйте Быстрый Сервис DNS

Так же, как и в случае с хостингом, существуют надёжные и менее авторитетные DNS-провайдеры. Хороший DNS-провайдер может значительно сократить количество DNS лукапов. Среди наиболее популярных служб DNS — Cloudflare, WordPress.com, Edgecast, DNSMadeEasy и DYN.

Принцип работы DNS-провайдеров очень похож на то, как работает CDN (Сеть доставки содержимого) — у них есть несколько точек присутствия (POP) по всему миру. А крупные поставщики, такие как Cloudflare, обычно имеют большую инфраструктуру DNS-серверов по всему миру, что обеспечивает лучшую скорость ответа, а значит и лучшую загрузку сайта.

Также для поиска наиболее оптимальных DNS-провайдеров в вашем регионе, вы можете воспользоваться такими инструментами, как DNSPerf и DNS SPeed Test.

2. Оптимизация Кеширования DNS

Благодаря DNS-кэшированию, информация о том с каким IP-адресом сопоставлен домен ещё некоторое время хранится на сервере. Как результат, DNS lookup занимает меньше времени. 

Кэширование DNS работает почти так же, как кэширование в WordPress. Информация DNS хранится на сервере до истечения срока действия. Кстати вы можете задавать время хранения информации в кэше, или TTL (time to live).

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

Если ваш сайт размещён в Hostinger, вы можете изменить значение в редакторе DNS-зоны.

Редактор DNS-зоны в Панели Управления Hostinger

Ниже приведены наиболее распространённые значения TTL:

  • 1800 секунд = 30 минут
  • 3600 секунд = 1 час
  • 14400 секунд = 4 часа
  • 43200 секунд = 12 часов
  • 86400 секунд = 24 часа

3. Оптимизация Префетчинга DNS

Другой способ уменьшить количество DNS-запросов минимизировать активность в фоновом режиме, пока посетители просматривают сайт. Этот метод известен как префетчинг DNS.

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

А когда посетитель сайта таки нажимает на ссылку, пытаясь перейти к предварительно разрешенном домену, то получает мгновенный доступ к контенту. 

Вы можете добавить DNS prefetch к определённому URL, добавив тег rel= к атрибуту ссылки. Если вы используете WordPress, вы можете добавить следующую строку в хедер вашего сайта:

<!-- Prefetch DNS for external assets -->
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//www.google-analytics.com"> 
<link rel="dns-prefetch" href="//www.keycdn.com">

И что самое главное, DNS префетчинг поддерживается большинством современных браузеров (англ).

4. Включение Режима Keep-Alive

Вы также можете уменьшить количество DNS-запросов, включив Keep-Alive. Это постоянно активный канал связи между сервером и браузером, помогающий загружать больше файлов ресурсов намного быстрее.

Например, если у вас есть один ресурс на n1.assetdomain.com и пять ресурсов на n2.assetdomain.com, вместе они составят шесть DNS-запросов. С Keep-Alive эти ресурсы будут загружены как два запроса.

Стоит также отметить, что при такой активной передаче используется лишь незначительная часть пропускной способности, поскольку запросы упакованы в одно крошечное сообщение. Вы можете включить эту функцию на серверах Apache и Nginx.

Apache

Чтобы включить Keep-Alive на сервере Apache, добавьте следующий код в ваш файл .htaccess:

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Nginx

Для серверов Nginx найдите основной модуль HTTP (ngx_http_core_module), а затем строку, которая выглядит примерно так keep alive_disable. Измените её, как показано в примере ниже:

keepalive_disable none;

5. Замена Записей CNAME Записями ANAME

Записи CNAME создают дополнительный lookup, который может вызвать небольшую задержку разрешения IP. Небольшое количество CNAME это нормально. Однако, если на вашем сайте подобных записей слишком много, удалите их из DNS, чтобы уменьшить количество DNS-запросов.

В качестве альтернативы вы можете использовать записи ANAME. Они имеют те же функциональные возможности, что и CNAME, но на корневом уровне, что означает более быстрое разрешение IP-адресов.

Записи CNAME используются для привязки псевдонимов доменных имён к каноническому домену. Для примера возьмём www.domain.com с настроенными записями CNAME. Чтобы разрешить IP-адрес, сначала нужно разрешить имя хоста, что требует два набора разных запросов.

ANSWER SECTION:

www.domain.com. 3599 IN CNAME domain.com.

domain.com. 3599 IN A 40.71.11.131

Запись ANAME, в свою очередь, позволяет пропустить эти запросы и вместо этого вернёт следующий ответ:

ANSWER SECTION

www.domain.com. 3599 IN A 40.71.11.131

Если вы используете Cloudflare, то вам будет предоставлена функция под названием CNAME Flattening (англ), что является аналогом ANAME.

6. Отложенная Загрузка JavaScript

Этот метод позволяет полностью загрузить весь контент сайта перед загрузкой JavaScript. Это означает, что поиск DNS тоже не будет вызван немедленно. Такая практика может ускорить загрузку сайта и, в свою очередь, улучшить опыт посетителей.

В WordPress вы можете использовать плагин Async JavaScript, который сделает всю работу за вас. Но помните, что вам также нужно будет перечислить все JS скрипты, которые вы хотите исключить из отсрочки.

О том, как отложить загрузку JavaScript подробно рассказано отдельном руководстве.

Итоги

Таким образом, DNS lookup, просмотр DNS, или поиск DNS понятия, которые описывают один процесс поиск в своего рода “телефонном справочнике” интернета, системе доменных имён, информации о том, какой IP принадлежит тому или иному сайту (домену). DNS lookup состоит из множества DNS-запросов, которые передаются от сервера к серверу, пока не будет найдена необходимая информация. Чем длительней поиск тем дольше грузится страница, что может негативно повлиять на опыт пользователей сайта. Давайте ещё раз напомним, как можно уменьшить количество DNS-запросов и улучшить производительность и скорость загруки вашего сайта.

  • Использование быстрой службы DNS верный способ улучшить DNS lookup, поскольку об оптимизации позаботятся провайдеры.
  • Оптимизация кеширования DNS ещё один отличный способ улучшить просмотр DNS. Работает почти так же, как кэш в WordPress.
  • Префетчинг DNS ускоряет доставку ответа, предварительно разрешив доменные имена на странице. Этот метод поддерживают все основные браузеры.
  • Режим Keep-Alive позволяет поддерживать активную двухканальную связь между браузером и сервером. При этом не потребляет много пропускной способности.
  • Замена CNAME записями ANAME вы также можете заменить CNAME более эффективной записью ANAME.
  • Отложенная загрузка JavaScript и, наконец, вы можете отложить JavaScript, чтобы он загружался после загрузки содержимого сайта.

Если у вас есть свой опыт оптимизации DNS поиска, поделитесь им в комментариях ниже.

Автор

Author

Olha L. / @olha

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

Похожие руководства

Оставьте ответ

Комментарий*

Имя*

Email*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Присоединиться к Hostinger сейчас!