彻底搞懂DNS传播(Propagation)与TTL

按顺序了解一下,修改DNS记录后为何不会立即生效。

什么是DNS传播

指的是域名的DNS记录(如A记录、CNAME记录等)发生变更后,该变更被全球各地DNS服务器和用户设备同步识别所需要的时间。

TTL的作用

每条DNS记录都会设置以秒为单位的TTL(Time To Live,存活时间)。TTL表示"这个应答可以被缓存多长时间",在TTL到期之前,解析器不会重新查询,而是直接返回已保存的旧值。

多层缓存导致生效需要时间

ISP的递归解析器、操作系统、浏览器等多个层级都会各自缓存DNS应答。只要其中任何一层的旧值TTL尚未到期,即使记录本身已经修改,该层级在一段时间内仍会继续显示旧的结果。

影响传播时间的因素

变更前记录所设置的TTL值、不同用户所使用解析器各自的缓存策略,以及域名注册商、域名服务器实际生效变更的速度,这些因素叠加在一起,共同影响实际的传播时间。

变更前提前调低TTL的技巧

如果即将进行服务器迁移等重要的DNS变更,建议提前一两天将TTL调低至300秒左右等较短的数值。等缓存中较短的TTL先完全过期后再进行实际变更,新值就能更快地传播开来。

如何查看传播状态

可以使用能够同时从全球多个节点查询DNS应答的在线DNS检测工具,查看各地区的生效情况。如果自己的电脑仍显示旧值,也可以进一步了解清除本地DNS缓存的方法。

如果想清除自己设备上的DNS缓存

如果想知道如何手动清除自己电脑或浏览器中残留的旧DNS缓存,可以进一步了解清除本地DNS缓存的方法。当其他地方已经更新、只有自己的设备还没生效时,这通常是最快的解决办法。

如果想了解DNS查询的完整流程

如果对域名如何一步步被解析为实际IP地址的完整流程感兴趣,也建议阅读关于DNS工作原理的完整介绍。

常见问题

DNS传播通常需要多长时间?

没有固定的时间。如果提前调低了TTL,大多数变更会在几分钟到几小时内生效;但如果之前的TTL设置较长,或某些解析器缓存旧值的时间超出预期,也可能需要一天以上。

为什么只有我的电脑一直连接到旧的网站?

即使其他地方都已经切换到新值,只要自己电脑或浏览器中还残留着TTL尚未到期的缓存记录,就会继续使用该旧值。这种情况下,手动清除本地DNS缓存通常可以立即解决问题。