为啥修改hosts不立即生效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥修改hosts不立即生效相关的知识,希望对你有一定的参考价值。

使hosts立即生效的方法:方法一:命令行(cmd)运行:ipconfig /flushdns #清除DNS缓存内容。
ps:ipconfig /displaydns //显示DNS缓存内容
方法二:修改注册表:HKeyCurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings,
新建:DnsCacheEnabled 0x0 (REG_DWORD)
DnsCacheTimeout 0x0 (REG_DWORD)
ServerInfoTimeOut 0x0 (REG_DWORD)这三个DWORD。
方法三:打开:控制面板-管理工具– 服务, 在其中找到“DNS Client” 将其停用并改为手动模式(做了这个后,运行ipconfig /flushdns就没必要了,也运行不成功)
参考技术A 有时我们会通过修改Hosts文件(路径为系统盘:\WINDOWS\system32\drivers\etc\hosts),在修改并保存Hosts文件后需要重启才能使设置生效。
这时可以打开命令提示符 窗口执行以下命令:

ipconfig /displaydns
//显示DNS缓存内容
ipconfig /flushdns
//删除DNS缓存内容
这样,系统就会清空本机的DNS缓存,从而不必重启,就能使Hosts文件生效。本回答被提问者采纳
参考技术B 你要清空缓存啊

望采纳

为什么修改Host不生效

开发验证的好好的功能,提测后经常有测试反应功能有bug。很多原因都是测试切换host没生效造成的,为什么切换host后刷新页面了也没生效呢?

不生效原因:

  • Keep-Alive

           服务器在响应头设置了 Connection: keep-alive (一般的网页都会设置 keep-alive,保持长连接,避免多次连接产生网络消耗)之后,客户端会跟服务器保持长连接,只要长连接不断开,页面在请求的时候就不会重新解析域名!(Chrome输入chrome://net-internals/#sockets 可以看到保持的长连接,点击按钮 close idle sockets 可以关闭所有的长连接。)

  • 存在浏览器 DNS 缓存
  • 系统 DNS 缓存

让修改生效:

  •  重启浏览器

                   重启浏览器之后,所有的连接(包括长连接)都会断开,自然就生效了

  •  隐私模式打开

                因为隐私模式下不会复用 TCP 连接,新开连接的时候,会重新解析 DNS 域名

  •  修改后过一会儿

                长连接失效,时间不确定,开发者可设置

 

附录:Chrome浏览器的工具命令,浏览器输入 chrome://about/

以上是关于为啥修改hosts不立即生效的主要内容,如果未能解决你的问题,请参考以下文章

修改hosts不立即生效原因分析

为什么修改Host不生效

Linux修改hostname与免密码登录

Google无法访问,修改hosts文件

win 10 hosts文件不生效

linux 修改hosts文件,无法生效,但ping已经生效了?