Запретить Chrome кэшировать DNS-записи сайта

Chrome кэширует записи DNS и игнорирует изменения в файле hosts после успешного подключения к моему сайту (за исключением перезапуска). При включенной предварительной выборке DNS это еще более заметно.

Существуют ли какие-либо заголовки страниц, которые будут указывать Chrome не кэшировать DNS сайта? Как Cache-Control или статус ответа как 307 Temporary Redirect?


person Petrus Theron    schedule 01.12.2010    source источник


Ответы (3)


Вероятно, это настоящая ошибка в Google Chrome. Я создал http://crbug.com/65570, чтобы отслеживать его, но, пожалуйста, добавьте любую дополнительную информацию, которую вы можете придумать. к ошибке, поэтому мы уверены, что правильно понимаем вашу проблему.

Похоже, что единственным обходным решением, помимо закрытия Chrome, является отключение сетевого кабеля и его повторное подключение. Когда Chrome видит такое событие, он сбрасывает свой сокет и кеш DNS. Правильное решение ошибки, скорее всего, сделает то же самое, когда мы увидим, что /etc/hosts изменился.

Если вы хотите узнать, когда ошибка будет исправлена, перейдите на страницу http://crbug.com/65570 и нажмите на звездочку рядом с номером ошибки. И, как я уже сказал, пожалуйста, добавляйте любую дополнительную информацию к ошибке.

person jorlow    schedule 06.12.2010
comment
Спасибо. Я где-то читал, что в проекте Chromium есть функция Shift+F5, которая принудительно обновляет DNS, но она все еще должна проникнуть в сам Chrome. - person Petrus Theron; 06.12.2010

Я не уверен, что это именно то, что вы ищете, но меня это тоже раздражает при переключении среды разработки, и я наткнулся на эту внутреннюю страницу Chrome, которая позволяет очистить кеш одним нажатием кнопки: chrome://net-internals/#dns. Перейдя туда, нажмите кнопку Clear host cache.

Изменить Как указано в ответе ниже, причина, по которой это не вступает в силу немедленно, заключается в том, что вам также необходимо очистить открытые сокеты. После очистки кэша DNS также перейдите по адресу: chrome://net-internals/#sockets. и нажмите на кнопки Flush socket pools.

Также имейте в виду, что операционная система может выполнять собственный уровень кэширования. Я думаю, что Linux не кэширует записи DNS (по крайней мере, для меня достаточно очистки кеша Chrome), но для Windows или Mac вам может потребоваться также очистить кэш DNS на уровне ОС. Запустите ipconfig /flushdns из командной строки для Windows или sudo dscacheutil -flushcache из командной строки для Mac.

person Scott    schedule 20.12.2012
comment
Спасибо, что указали на эту страницу. На самом деле я установил имена своих хостов так, чтобы они указывали на IPv6, потому что было проще набрать 127.0.0.1, но я не понял, что в Chrome нет IPv6 (эта страница показала мне это). Сразу после очистки кеша хоста и включения IPv6 все заработало отлично. - person Kevin Peno; 29.05.2013
comment
Как ни странно, это не работает для меня. Если я изменю файл hosts и нажму кнопку для очистки, он по-прежнему будет использовать кешированный хост, хотя в таблице больше нет кешированных хостов. - person Dan; 30.01.2014
comment
Ах, я забыл, что все еще может быть кеш на уровне ОС. Я работаю в Linux и не верю, что ОС выполняет кэширование DNS, но Windows и Mac делают это. Для Windows это будет ipconfig /flushdns, а для Mac будет sudo dscacheutil -flushcache - person Scott; 12.02.2014

В моем случае я часто переключаюсь с моего веб-сервера разработки и производственного сервера, используя пользовательские файлы хостов, чтобы очистить всю кэшированную информацию DNS из хрома, я использую эту процедуру, и она работает мгновенно на той же вкладке, где мне нужно загрузить обновленный адрес веб-сайта:

  1. Скопируйте и вставьте этот URL-адрес в Chrome: chrome://net-internals/#dns
  2. Нажмите кнопку «Очистить кеш хоста» и также нажмите маленькую черную стрелку в правом верхнем углу окна, нажмите «Очистить кеш» и «Flusk Sockets», и новый адрес будет загружается мгновенно.

Панель Chrome DNS

person Matteo Conta    schedule 24.08.2016
comment
Обновление: кажется, что простое нажатие на кнопку Flush sockets делает свое дело! - person Matteo Conta; 15.09.2016