← 返回博客列表

DNS 缓存与 TTL 是什么:改了解析不生效、连上线路仍打不开时怎么逐层清缓存

2026-10-06 · 刺猬VPN

域名解析有一个很容易被忽视的特性:结果会被缓存。你访问一个网站时,电脑先问路由器,路由器问运营商的解析服务器,运营商再一层层问到这个域名的权威服务器,拿到的地址会带着一个叫 TTL 的数字一路返回,每一层都按这个数字把结果存起来,在有效期内不再重复查询。这本来是为了加快访问,但也带来了两类常见困扰:站长改了解析记录,访客那边迟迟看不到新地址;用户连上了线路,浏览器却仍然沿用之前缓存下来的错误地址,页面打不开。

第二种情况在国内尤其常见。某些境外域名在未连线路时被解析到了错误地址,这个错误结果同样会被系统和浏览器缓存起来;之后即使连上线路,程序也可能继续使用缓存里的旧结果,直到缓存过期。很多人以为是线路不好,反复换节点也没用,其实清一下缓存就好了。下面先讲清 TTL 和缓存分布在哪几层,再给出逐层清理的步骤和报错对照。

DNS 缓存分布在哪几层

TTL 的单位是秒,由域名的权威服务器设置,常见值从三百秒到一天不等。它表示的是「这个结果最多可以缓存多久」,而不是「多久之后生效」。所以改解析记录后,最坏情况下要等旧记录的 TTL 走完,各层缓存才会全部更新;用户自己能清掉的只有浏览器、系统和路由器三层,递归解析服务器那一层只能等,或者临时换一个解析服务。

缓存位置谁在缓存过期依据怎么清理
浏览器Chrome、Edge、Firefox 内部通常是较短的固定时间浏览器内部页面或重启浏览器
操作系统系统解析服务按记录 TTL系统命令清空
应用运行时Java 等运行时自带缓存运行时自己的配置重启程序或改配置
家用路由器路由器内置解析转发按记录 TTL重启路由器
递归解析服务器运营商或公共解析服务按记录 TTL用户无法清理,只能等待或换服务
否定缓存各层对不存在的域名也缓存按区域设置的否定 TTL同上,逐层清理

逐层清理缓存的步骤

  • 第一步:先把网络线路准备好。如果你遇到的是「连上线路后境外网站仍打不开」,先确认刺猬VPN已经连上,再按下面的顺序清缓存,清完之后的新查询才会走当前的网络环境;
  • 第二步:清浏览器缓存。Chrome 与 Edge 在地址栏打开内部网络页面的 DNS 分区,点击「Clear host cache」,再到套接字分区点击「Flush socket pools」;Firefox 在内部网络页面的 DNS 分区点击清除;最简单的办法是完全退出浏览器再打开;
  • 第三步:清 Windows 系统缓存。以管理员身份打开命令提示符执行 ipconfig /flushdns,看到「已成功刷新 DNS 解析缓存」即可;PowerShell 可以用 Clear-DnsClientCache,查看当前缓存用 Get-DnsClientCache;
  • 第四步:清 macOS 系统缓存。在终端执行 sudo dscacheutil -flushcache,再执行 sudo killall -HUP mDNSResponder,命令没有输出是正常的;
  • 第五步:清 Linux 系统缓存。使用 systemd-resolved 的发行版执行 resolvectl flush-caches,再用 resolvectl statistics 确认缓存条目归零;
  • 第六步:手机端最简单的办法是开关一次飞行模式,系统会清掉大部分解析缓存;
  • 第七步:路由器层面,重启路由器即可清空它的转发缓存;
  • 第八步:验证。用 nslookup 或 dig 查询目标域名,对比返回的地址是否已经是新地址,dig 的结果里能看到剩余的 TTL 秒数,这个数在倒数,说明你拿到的是缓存结果。

按现象排查:哪一层的缓存在作怪

判断问题出在哪一层,最有效的办法是对比:同一时间、同一设备上,不同程序拿到的结果是否一致。

  • 命令行查到的是新地址,浏览器访问的仍是旧站:浏览器自己的缓存或者浏览器开启了安全 DNS,绕过了系统解析,清浏览器缓存并检查安全 DNS 设置;
  • 自己电脑是旧地址,手机流量下是新地址:本地递归解析服务器还缓存着旧记录,等 TTL 过期或临时换一个公共解析服务;
  • 连上线路后境外网站仍报「找不到服务器」或连接被重置:缓存里是之前被污染的地址,清浏览器与系统缓存后重开浏览器;
  • 新建的子域名一直提示不存在:之前查询过一次不存在的结果被否定缓存,等否定 TTL 过期或清本地缓存;
  • Java 服务一直连旧地址:运行时的解析缓存时间过长,调整运行时配置或重启服务;
  • 同一局域网里只有一台设备异常:那台设备自己改过 hosts 文件或者手动设置了解析服务器,检查这两项;
  • 清了缓存仍然是旧地址:权威服务器上的记录没有改成功,用 dig 直接查询权威服务器确认。

几种解析方式与缓存行为对比

这张表说明了一个容易忽视的事实:解析结果对不对,和它从哪里来、在哪里被缓存一样重要。连接线路之后,境外域名的解析通常也会随线路处理,但之前已经缓存在本地的旧结果不会自动作废。所以「连上之后先清一次缓存」是一个值得养成的习惯。实际可用性取决于当前网络环境。

对比项运营商解析公共解析服务线路内的解析
缓存行为按 TTL,部分运营商会延长按 TTL,较为规范随当前线路的解析规则
境外域名结果可能被污染明文查询仍可能被干扰结果较为干净
国内域名结果调度到就近节点可能调度不够精准智能分流时国内域名可直连解析
清理方式无法清理,只能等无法清理,只能等断开重连后重新查询
适合场景日常国内访问排查与对比访问境外网站时
使用成本免费免费免费节点永久免费、不限流量、不限速

站长视角:改解析前该怎么设置 TTL

如果你是网站或服务的维护者,要迁移服务器或更换地址,正确做法是提前降低 TTL。假设当前记录的 TTL 是一天,那么至少在迁移前一天就把它改成三百秒,等旧的一天 TTL 走完,所有缓存里都变成了三百秒的新记录;迁移当天再修改地址,各层缓存最多五分钟就会更新。迁移稳定之后,再把 TTL 调回较长的值,减轻权威服务器的查询压力。

很多人反过来做:先改地址,再调低 TTL,这时各层缓存里已经存着一天有效期的旧记录,调低 TTL 对它们毫无作用。另外,迁移期间旧服务器不要立刻关机,保留到旧 TTL 完全过期之后,确保还在使用缓存的访客不会访问失败。

接入内容分发网络的网站情况又不一样。这类网站的域名通常指向分发服务商提供的别名记录,别名背后的地址由服务商按访客位置动态调度,TTL 往往只有几十秒到几分钟,站长自己改不了,也不需要改。真正需要留意的是别名记录本身的 TTL:从自建服务器切换到分发网络,或者在两家服务商之间迁移时,同样要提前降低这条记录的 TTL。另外,部分解析服务商对免费套餐设置了 TTL 的下限,低于下限的设置会被自动调整,以服务商说明为准。

与 hosts 文件和公共解析服务的分工

hosts 文件是比缓存更优先的一层:系统查询域名时先看 hosts,有记录就直接使用,既不查缓存也不发请求。它适合临时把某个域名指向测试服务器,但写进去的地址不会过期,忘了删就会一直生效,具体用法与风险见 hosts 文件怎么改。想对比不同解析服务的结果、或者在本地递归服务器缓存未过期时临时绕开它,可以换用公共解析服务,各家服务的地址与加密查询方式见 公共 DNS 服务对比。

三者的关系可以这样理解:hosts 是手动指定,缓存是自动记忆,解析服务是答案的来源。排查解析问题时按 hosts、浏览器缓存、系统缓存、路由器、解析服务的顺序逐层检查,基本都能定位。

常见报错速查表

现象原因解决办法
改解析后仍访问旧站旧记录 TTL 未过期清本地缓存,等待递归服务器过期
连上线路后仍找不到服务器缓存了被污染的地址清浏览器与系统缓存后重开
新子域名提示不存在否定缓存未过期等否定 TTL 过期或清本地缓存
命令行与浏览器结果不同浏览器开了安全 DNS检查浏览器安全 DNS 设置
只有一台设备异常hosts 或手动解析服务器检查 hosts 与网卡设置
Java 服务连旧地址运行时缓存过长调整配置或重启服务
清缓存后仍是旧地址权威记录未改成功直接查询权威服务器确认

高频问答

  • 问:TTL 设得越短越好吗?答:不是,过短会增加查询次数和解析延迟,日常三百秒到一小时比较常见;
  • 问:DNS 生效到底要多久?答:取决于旧记录的 TTL,最长等旧 TTL 走完,所谓全球生效四十八小时只是保守说法;
  • 问:清 DNS 缓存会影响上网吗?答:不会,只是接下来的几次访问要重新查询,稍慢一点;
  • 问:为什么手机开关飞行模式就好了?答:飞行模式会重置网络连接并清掉系统解析缓存;
  • 问:浏览器的安全 DNS 要不要开?答:它能减少解析被干扰,但会绕过系统设置,排查问题时要记得它的存在;
  • 问:断开线路后要不要清缓存?答:一般不必,遇到国内网站访问异常、打开很慢或跳到错误页面时再清一次即可。

让解析结果始终是对的

DNS 缓存与 TTL 的道理并不复杂:每一层都会按 TTL 记住答案,改了解析或者换了网络环境,旧答案不会马上消失。遇到解析不生效、连上线路仍打不开、设备之间结果不一致时,按浏览器、系统、路由器的顺序清一遍缓存,再用 dig 确认结果,大部分问题当场就能解决;站长迁移前提前降低 TTL,能把影响控制在几分钟之内。

刺猬VPN 支持自定义用户名和密码匿名注册,不需要邮箱、也不需要手机号,采用 HTTPS+AES 加密传输;免费节点永久免费、不限流量、不限速,时长套餐有效期内不限流量、不限速,一个账号支持多设备同时在线。客户端带断线保护和按域名、IP 的智能分流,国内域名照常就近解析与直连,境外域名随线路处理。连上之后清一次本地缓存,境外网站的访问会更顺畅。实际可用性取决于当前网络环境。

开始使用刺猬VPN:免费节点即刻体验,全球会员线路

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。