Duang,最近搭建了一个自己的博客小破站,欢迎各位小伙伴来访吖:https://www.ares-stack.cn/blog_service/#/game
参考源于:
修改Hosts为何不生效,是DNS缓存? - Barret李靖 - 博客园 (cnblogs.com)
如何清除浏览器的 DNS 缓存:Chrome、Edge、Firefox、Safari - sysin | SYStem INside | 数据中心系统内幕
---------------------------------------------------------------------------------------------------------------------------------
修改Hosts不生效的根本原因:
因为服务器设置了 keep-alive
!次要原因是存在浏览器 DNS 缓存和系统 DNS 缓存
系统DNS缓存,可以直接ping测试;
浏览器DNS缓存,可通过换浏览器验证(或者隔一段时间才访问,或清空浏览器DNS缓存),如下(如何清除浏览器的 DNS 缓存:Chrome、Edge、Firefox、Safari - sysin | SYStem INside | 数据中心系统内幕):
对普通用户而言,关闭后重新打开浏览器一般可以刷新 DNS 缓存。如果进行 Web 调试的时候,切换了 hosts,需要快速的清空浏览器的 DNS 缓存,方法如下:
Google Chrome
在地址栏输入以下地址回车,点击
Clear host cache
即可:
1 chrome://net-internals/#dnsMicrosoft Edge
Edge 源于 Chrome,类似,地址为:
1 edge://net-internals/#dns以上地址可以保存到 “收藏夹” / “书签栏” 点击即可快速打开。
Mozilla Firefox
Firefox 之前有几个扩展非常方便,可惜都已经下线了(SYSIN):
现在实现方法如下:
在地址栏输入:
about:config
,回车,“接受风险并继续”,然后搜索network.dnsCache
,出现如下 3 项:
1 2 3 network.dnsCacheEntries 400 network.dnsCacheExpiration 60 network.dnsCacheExpirationGracePeriod 60将数值都修改为 0 即可。
注意:
- 修改后为禁用 DNS 缓存(SYSIN)。
- 该操作对网络浏览体验可能有一定影响,仅用于调试。
- 如果有新的扩展出现,使用扩展更佳。
---------------------------------------------------------------------------------------------------------------------------------
参考原因:
- 如果浏览器使用了代理工具,修改 Hosts 也不会生效。这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件、SwitchySharp等)的代理,建议调试的时候先关闭这些代理。
- 使用 pac 文件代理有的时候部分文件的代理不生效,应该是 pac 对应的代理服务器上,做了部分处理。
- 部分浏览器也有 DNS 缓存,如 chrome(chrome://dns),这是为什么重启浏览器也不生效的原因,一般设定时间为 60s (如 Firefox)。
- 浏览器有DNS缓存,系统也会存在 DNS 缓存,有的时候即便在 chrome://dns 清空了浏览器 DNS 缓存,依然不生效,是因为系统 DNS 缓存还未刷新,刷新方式可以看这篇文章。