hostsファイルを変更してもブラウザで反映されず、再起動してみたり、シークレットウインドウを開いてみたりと検証作業などで手間取ることがあったので調査。
検証環境
- Windows 10 pro
- Google Chrome 75.0.3770.142
- Opera 62.0.3331.99
- Firefox 68.0.1
- Internet Explorer 11.1387.15063.0
- Edge 40.15063.674.0
- Safari 5.1.7
Google Chrome / Opera
-
hostsファイルを変更
-
下記ページにアクセスして「Clear host cache」ボタンを押してホストキャッシュをクリア
chrome://net-internals/#dns -
下記ページにアクセスして「Flush socket pools」ボタンを押してソケットプールの消去
chrome://net-internals/#sockets
Firefox
about:config
とアドレスバーに入力して network.dnsCacheExpiration
を0にするとキャッシュを使わずに名前解決をするようになるのでhostsが即時反映される。
Internet Explorer / Edge / Safari
- ブラウザの再起動以外の方法での即時反映方法がわからなかった。
- Chromeと同じようにDNSキャッシュの削除 + ソケットプールの消去で実現できると思って調査したが後者の方法がわからなかった。DNSキャッシュの削除方法を参考までに下記に記載。
DNSキャッシュの削除
- コマンドプロンプトなどを使って
ipconfig /flushdns
を実行 -
ipconfig /displaydns
を実行してDNSキャッシュを確認する
ソケットプールの削除
?????????
まとめ
Chrome / Operaの方法が一番ラクで確実。
Firefoxの方法は設定を直接変更してDNSキャッシュを使わないようにするので検証以外の用途で使う場合は素直に再起動する方法が良いかもしれない。
IE,Edge,safariに関しては再起動。