平时上网时,你可能没注意,但每次打开网站,电脑都会先去查这个网站的地址。这个过程叫域名解析,而为了加快速度,系统会把查过的结果暂时存起来,这就是域名系统缓存。
操作系统里的DNS缓存
在Windows电脑上,DNS缓存是默认开启的,由系统自动管理。你可以通过命令提示符查看或清除它。
比如,打开“运行”(Win + R),输入 cmd,然后敲回车,执行下面命令:
ipconfig /displaydns
这会列出当前缓存的所有域名记录。如果想清空缓存,用:
ipconfig /flushdns
macOS 和 Linux 稍有不同。macOS 从某个版本开始用 mDNSResponder 管理缓存,清缓存通常用:
sudo dscacheutil -flushcache
或者:
sudo killall -HUP mDNSResponder
路由器也存DNS缓存
家里的路由器不只是转发网络信号,很多也会做DNS缓存。特别是用了第三方固件(比如Padavan、OpenWRT)的路由器,还能手动设置DNS服务器和缓存时间。
登录路由器后台,一般在“网络设置”或“DHCP/DNS”选项里能找到相关配置。如果你改了DNS但某些设备还是走旧路线,可能是路由器缓存还没更新,重启路由器或清一下缓存就行。
浏览器自带的DNS缓存
很多人不知道,浏览器自己也会存DNS记录。比如Chrome,它有一套独立的DNS缓存机制,不完全依赖系统。
在 Chrome 地址栏输入:
chrome://net-internals/#dns
就能看到当前缓存的域名。点“Clear host cache”就可以清掉。Firefox 类似,可以通过设置关闭预测解析来减少缓存影响。
公共DNS服务的缓存
像阿里DNS(223.5.5.5)、腾讯DNSPod(119.29.29.29)、Google DNS(8.8.8.8)这些公共DNS,本身也有缓存。你查一个域名,它们不会每次都问根服务器,而是把结果存一段时间,这个时间由域名的TTL值决定。
也就是说,哪怕你本地清了缓存,公共DNS那边可能还留着旧记录,等TTL到期才会更新。所以换域名解析后,全网生效需要时间,不是立刻就变的。
如何判断缓存位置并处理问题
当你发现某个网站打不开,或者跳转到了错误页面,先别急着重装系统。可以一步步排查:
- 先清浏览器缓存和DNS缓存
- 再清系统DNS缓存
- 最后重启路由器,确保中间节点都刷新一遍
如果公司用内网DNS,可能还要联系IT部门清内部缓存。
举个例子:小李换了新网站服务器,IP变了,但他在公司打不开新页面。家里能开,说明解析没问题。问题出在公司内网DNS缓存没更新,或者他自己的电脑还记着旧地址。按上面步骤一清,立马解决。