ChromeはDNSレコードをキャッシュし、サイトに正常に接続した後(再起動を除く)、hostsファイルへの変更を無視する傾向があります。DNSプリフェッチを有効にすると、さらに顕著になります。
ChromeにサイトのDNSをキャッシュしないように指示するページヘッダーはありますか?Likeまたは?Cache-Control
のような応答ステータス307 Temporary Redirect
ChromeはDNSレコードをキャッシュし、サイトに正常に接続した後(再起動を除く)、hostsファイルへの変更を無視する傾向があります。DNSプリフェッチを有効にすると、さらに顕著になります。
ChromeにサイトのDNSをキャッシュしないように指示するページヘッダーはありますか?Likeまたは?Cache-Control
のような応答ステータス307 Temporary Redirect
これがまさにあなたが探しているものかどうかはわかりませんが、これは私も開発環境を切り替えるのを悩ませ、ボタンをクリックしてキャッシュをクリアできるこの内部クロムページに出くわしました:
chrome:// net-internals/#dns . そこに行った後、Clear host cache
ボタンをクリックします。
編集
以下の回答に記載されているように、これがすぐに有効にならない理由は、開いているソケットもフラッシュする必要があるためです。DNS キャッシュをクリアした後、chrome://net-internals/#socketsに移動してボタンをクリックしFlush socket pools
ます。
また、オペレーティング システムが独自のレベルのキャッシュを行う可能性があることにも注意してください。Linux は dns エントリをキャッシュしないと思います(少なくとも私にとってはクロム キャッシュをクリアするだけで十分です) が、Windows や Mac では OS レベルの DNS キャッシュもフラッシュする必要があるかもしれません。ipconfig /flushdns
Windows の場合sudo dscacheutil -flushcache
はコマンド ラインから、Mac の場合はコマンド ラインから実行します。
これはおそらく Google Chrome の実際のバグです。追跡するためにhttp://crbug.com/65570を作成しましたが、考えられる追加情報があればバグに追加して、問題を正しく理解できるようにしてください。
Chrome を閉じる以外の唯一の回避策は、ネットワーク ケーブルを抜いてから再度差し込むことのようです。Chrome がそのようなイベントを検出すると、ソケットと DNS キャッシュをドロップします。/etc/hosts が変更されたことを確認すると、バグの正しい解決策は同じようになる可能性があります。
バグがいつ修正されたか知りたい場合は、http://crbug.com/65570にアクセスし、バグ番号の横にある星をクリックしてください。そして、私が言ったように、追加情報があればバグに追加してください。
私の場合、カスタム ホスト ファイルを使用して開発 Web サーバーと運用サーバーから切り替えることがよくあります。Chrome からすべての DNS キャッシュ情報をクリアするには、この手順を使用します。更新された Web サイトのアドレス: