DNS TTL — это сокращение от Time To Live, значение времени, добавляемое к каждой DNS-записи. Оно измеряется в секундах и показывает, как долго запись будет храниться в кэшах интернет-провайдеров и устройств пользователей. После истечения TTL кэш очищается и следующий запрос снова отправляется к DNS-серверу. Этот простой параметр на самом деле имеет огромное значение для поведения сайта и удобства управления.
Как работает TTL и что он даёт
Когда пользователь открывает домен впервые, браузер запрашивает у DNS-сервера IP-адрес и получает ответ вместе со значением TTL. Например, при TTL 3600 браузер и провайдер сохранят эту запись в кэше на 1 час и в течение этого времени не будут отправлять новых DNS-запросов. Это снижает нагрузку на сервер и ускоряет открытие страниц.
Но у этого свойства есть и обратная сторона: если вы изменили IP-адрес, пользователи увидят новую запись только после истечения TTL. Низкое значение TTL быстро распространяет изменения, но повышает нагрузку на DNS-серверы. Высокое TTL разгружает серверы, но изменения распространяются долго, и часть пользователей ещё некоторое время видят старую запись.
Как снижать TTL для миграции
При переносе сайта на новый сервер или смене IP-адреса заранее снижать TTL крайне важно. Если проводить миграцию со стандартным TTL 86400 секунд, некоторые пользователи будут видеть старый сервер ещё 24 часа, что вызывает путаницу. Чтобы избежать этого, за 1-2 дня до миграции TTL снижают с 86400 до 300 или даже 60.
После истечения старого высокого TTL активируется новое низкое значение, и только тогда выполняется основное изменение. В этот момент изменение распространяется по интернету за 5-10 минут, и пользователи практически незаметно переходят на новый сервер. После завершения миграции TTL возвращают на обычное значение 3600 или 86400, чтобы снизить нагрузку на сервер.
Скорость propagation и задержки
DNS propagation — это процесс распространения новой записи по всему интернету, и он не всегда идёт равномерно. Самое быстрое распространение обычно у крупных мировых провайдеров, которые строго соблюдают сроки кэша. Мелкие локальные провайдеры могут иногда нарушать TTL и хранить записи дольше указанного.
В реальности propagation может занять немного больше времени, чем значение TTL, и это нужно учитывать. Кроме того, у части пользователей в операционной системе тоже есть DNS-кэш, и его можно очистить даже быстрее, чем кэш браузера: ipconfig flushdns в Windows и dscacheutil в Mac выполняют эту задачу.
Оптимальные TTL для разных записей
Для записей A и AAAA стандартом считается 3600 секунд (1 час) и это подходит большинству сайтов. Для MX-записей рекомендуется 86400 (1 день) или больше, поскольку адрес почтового сервера редко меняется. TXT-записи (SPF, DKIM, DMARC) тоже обычно настраивают с высоким TTL.
При работе с CDN и failover TTL нужно снижать до 60-300 секунд, поскольку эти записи могут меняться динамически. Для CNAME-записей оптимальный диапазон 1800-3600. При выборе оптимального значения для каждой записи нужно балансировать между частотой изменений и нагрузкой на сервер.
Sayt.uz практика
В DNS-панели клиентов Sayt.uz значение TTL по умолчанию равно 3600 секундам, но клиенты могут менять его в диапазоне от 60 до 86400. За прошлый год было проведено 1850 миграций, в 89 процентах из них применялось предварительное снижение TTL, в результате propagation завершалась в среднем за 8 минут. Поддержка миграций бесплатна и доступна во всех базовых пакетах, а премиум-пакет DNS с автоматическим управлением TTL стоит 95 000 сумов в год. Через эту услугу клиенты выполняют смену IP с временным TTL 60 секунд, сводя потери пользователей практически к нулю.