Три причины, почему один домен отвечает по-разному
Геомаршрутизация
Свой edge-сервер в каждом регионе
Кэширование
Независимые TTL и кэши
Split-horizon
Другой ответ — так задумано
Как очистить DNS на Android
Во вторник вечером я перенёс сайт на новый хост, обновил DNS, смотрел, как чекер зеленеет резолвер за резолвером, — а мой телефон продолжал грузить старый сайт до четверга. На десктопе это заняло бы у меня тридцать секунд: открыть терминал, очистить кэш, готово. Телефон просто сидел, довольный собой, и грузил вчерашний интернет. В ту неделю я узнал то, что рано или поздно узнают все пользователи Android: кнопки очистки не существует. Не спрятанной, не зарытой в меню разработчика. Её просто нет.
Это не значит, что вы беспомощны. Это значит, что DNS-кэш Android работает не так, как кэш десктопа, и вещи, которые реально его чистят, немного косвенны. Некоторые стоит делать. Некоторые — фольклор. А одна из них — знаменитая — в основном перестала работать годы назад.
Почему здесь нечего нажимать
В Windows или macOS одна системная служба отвечает на запросы почти всего, поэтому одна команда может очистить её кэш. У Android такой формы никогда толком не было. Приложения разрешают имена через общие системные службы, браузеры держат собственные кэши сверху, а производители добавляют сверху свои правки. В результате — несколько маленьких тайников с ответами вместо одного бака, который можно осушить.
Как долго ответ задерживается, тоже зависит не от вашего телефона. Каждая запись несёт TTL — время жизни, установленное владельцем сайта, — и кэши обязаны его соблюдать. В этом тихая причина, по которой смена DNS может казаться мгновенной вашему соседу и устаревшей вам: ваш телефон спросил в неудачный момент и всё ещё держит ответ, который не истёк. Наше объяснение о том, как работает распространение DNS, проходит всю эту цепочку, если хотите.
Вещи, которые реально помогают
Переключите режим полёта (иногда)
Включение режима полёта на двадцать или тридцать секунд, а затем выключение заставляет телефон перестроить сетевые соединения и заново зарегистрироваться у вашего провайдера. На многих сборках это заодно вытряхивает закэшированные ответы; на других их не трогает. Это ничего не стоит и занимает полминуты, поэтому стоит одной попытки — только не считайте неудачу сюрпризом. Честно говоря, на свежих версиях этот трюк — больше надежда, чем механизм.
Перезагрузите телефон
Грубый инструмент, и тот, что надёжно работает. Полная перезагрузка очищает летучие кэши, которые система держит в памяти, сбрасывает сетевой стек и начинает запросы заново. Если сайт после всего остального показывает вам свой старый адрес, перезагрузите телефон, прежде чем пробовать что-то умнее. Да, это старейший совет техподдержки. И здесь он правильный.
Перезагрузите роутер, если это ваш Wi-Fi
Проблема может быть вовсе не в телефоне. Ваш домашний роутер тоже кэширует ответы, и ваш телефон будет продолжать получать его устаревшие копии. Перезагрузка роутера очищает этот кэш, а в виде бонуса вы узнаете, все ли устройства в доме видят старый сайт или только ваше.
А как же собственный кэш Chrome?
У Chrome на Android когда-то были собственные внутренние страницы для этого — многие старые руководства до сих пор отправляют вас на chrome://net-internals нажать кнопку очистки. Эта страница упразднена. На нынешних сборках адрес больше не предлагает тех DNS-инструментов; старые инструкции продолжают циркулировать, потому что интернет никогда ничего не удаляет. Если руководство говорит идти туда, устарело оно, а не ваш телефон.
Что ещё живёт в Chrome — это его данные сайтов. Очистка закэшированных изображений и файлов одного дурно ведущего себя сайта или принудительная остановка Chrome в настройках приложений Android, чтобы он стартовал холодным, могут вытряхнуть ответы, которые держит сам браузер. Это не очистит кэш системного уровня — ничто из того, что делает приложение, не может, — но многие жалобы «сайт не обновляется» оказываются браузером, а не сетью, и это честный способ его исключить.
Частный DNS: обход, а не очистка
В сетевых настройках большинства телефонов Android зарыт частный DNS, который направляет ваши запросы через зашифрованное соединение к резолверу, который вы выбираете. Если ваш нынешний резолвер — обычно провайдерский или роутерный — держит устаревший ответ, переход на другой резолвер даёт вам совершенно другой кэш, в котором новая запись, возможно, уже есть.
Заметьте, что это делает и чего не делает. Оно ничего не очищает; оно обходит полную полку вместо того, чтобы её очистить. Это всё равно полезно — если сайт грузится правильно в тот момент, когда вы переключаетесь, вы узнали, что вина лежит в кэше вашего старого резолвера, и лекарство на самом деле — просто время. Наше руководство по смене DNS-сервера честно покрывает выбор резолвера и компромиссы приватности, включая тот факт, что вы передаёте свои запросы кому-то другому.
Выясните, какой кэш держит ответ
Прежде чем перезапускать что-либо ещё, потратьте две минуты на то, чтобы сузить круг: какому кэшу принадлежит устаревший ответ. Тесты скучны. Определённость прекрасна.
Попробуйте второй браузер
Откройте сайт в другом браузере — Firefox, Samsung Internet, в каком угодно из уже установленных. Если он показывает новый сайт, ваша сеть и система телефона в порядке, а старым ответом владеет ваш первый браузер. Очистите данные сайта в этом браузере или остановите его принудительно — и дело сделано.
Сравните Wi-Fi и мобильные данные
Отключите Wi-Fi и перезагрузите страницу. Если новый сайт появляется на мобильных данных, ваш домашний путь осуждён — кэш роутера или резолвер вашего провайдера за ним. Если старый сайт виден в обоих случаях, устаревший ответ либо на самом телефоне, либо всё ещё путешествует по интернету, и следующий тест решит, что именно.
Спросите резолверы, которые вам ничего не должны
Пропустите домен через онлайн-проверку распространения. Если резолверы в нескольких странах уже показывают новый адрес, мир двинулся дальше, и только ваши кэши с ним не согласны. Если они показывают и старый адрес, прекращайте всё перезапускать: само изменение всё ещё распространяется, и никакая настройка телефона его не достаёт.
Некоторые руководства для разработчиков упоминают изменение поведения DNS через подключение к компьютеру и инструменты отладки. Этот путь реален, но он существует для тестирования приложений, а для телефона, на который вы полагаетесь каждый день, он непропорционален: всё, что он может сделать с устаревшим ответом, перезапуск делает проще. Я упоминаю его только затем, чтобы, встретив этот совет, вы узнали инструмент для мастерской, а не недостающую страницу настроек.
Приложение, которое врёт, и невинный телефон
Ещё один тайник, о котором стоит знать: отдельные приложения. Хорошо воспитанные приложения пользуются системным резолвером и наследуют его ответы, но некоторые приложения выполняют собственное разрешение или закрепляют соединения и продолжают использовать адрес долго после того, как система ушла дальше. Классическая картина — браузер показывает новый сайт, а одно банковское или торговое приложение всё ещё показывает старый — или ошибки. Принудительная остановка этого приложения или очистка его кэша в настройках — это эквивалент перезагрузки для одного приложения.
Меняйте тест, прежде чем винить телефон: если три браузера и пять приложений все показывают старый сайт, устаревший ответ находится выше приложений. Если ровно одно приложение не согласно со всем остальным, это приложение и есть ваш виновник.
Ответ, который никто не хочет слышать: ждать TTL
Здесь я должен быть с вами прям. Если сайт сменил свой DNS с длинным TTL — скажем, в сутки — и ваш телефон или резолвер вашего роутера закэшировал старый ответ прямо перед сменой, может оказаться, что нажать нечего такого, что произведёт новый ответ раньше времени. Наш разбор по очистке DNS-кэша покрывает десктопные команды и ту же логику кэша, и логика здесь непобедима: кэши истекают по расписанию записи, а не по вашему.
Что вы можете сделать — это подтвердить, что это действительно ваша ситуация. Загрузите сайт через мобильные данные вместо Wi-Fi. Попробуйте новый резолвер через частный DNS. Если независимые сети показывают новый сайт, а только ваш привычный путь показывает старый, вы наблюдаете, как осушается кэш, и он осушится. Если никто и нигде не видит новый сайт, сама смена ещё не приземлилась — и это тоже не вина вашего телефона.
Если сайт переносите вы
Всё до сих пор написано со стороны ожидания DNS-изменения. Если когда-нибудь изменение будете делать вы, вы сможете избавить своих посетителей от большей части этого. За полный день до переезда понизьте TTL записей, которые собираетесь менять. Запись, которая раньше говорила миру «держи этот ответ сутки», теперь говорит «держи его пять минут», кэши повсюду обновляются быстро, и в ночь переезда новый адрес расходится за минуты, вместо того чтобы тянуться до четверга, — что, читатель, возможно, помнит, ровно так эта статья и начиналась.
Когда пыль уляжется, снова поднимите TTL, чтобы кэши могли делать свою обычную работу, и держите старый хост работающим после переключения как минимум в течение прежнего TTL. Чей-то телефон где-то всё ещё держит старый ответ, и он заслуживает работающего сайта, когда постучится.
Нужно проверить публичные DNS-адреса домена? Воспользуйтесь инструментом Domain IP Lookup.
Часто задаваемые вопросы
Читайте также
Выбор TTL на практике
Как очистить кэш DNS в Windows, macOS и Linux
Справочник команд для очистки кэша DNS на каждом уровне, что стирает каждая команда и какие слои очистка никогда не затронет.
Три уровня под названием «DNS-сервер»
Stub-резолвер
ваше устройство
Рекурсивный резолвер
провайдер, роутер или 1.1.1.1
Авторитетный
DNS самого домена
Как изменить ваш DNS-сервер (маршрутизатор или устройство)
Ваши устройства спрашивают резолвер, прежде чем загрузить что-либо. Его изменение занимает минуты, как только вы знаете, менять ли маршрутизатор или само устройство.
«Распространение» — это лишь истечение срока жизни кэшей
0 мин
вы сохраняете изменение
0-5 мин
DNS-хостинг обновляет данные
до конца TTL
старый ответ ещё в кэше
после TTL
новый ответ видят все
Ничего никуда не рассылается: каждый кэш просто перестаёт использовать свою копию
Распространение DNS: почему изменения занимают время
Ничего не распространяется. Новая запись уже работает в источнике, а кеш каждого резолвера истекает по собственным часам. Вот хронология, реальные пределы и то, что вы контролируете.