一句话定义:DNS 解析链路,是把一个好记的域名逐级问成机器可用的 IP 地址的完整过程;TTL(Time To Live,生存时间)是这条链路上每一份“答案”可以被缓存多久的倒计时。
一次解析,要跑完三层
你在浏览器里敲下域名,操作系统一般不会自己去从头问,而是把问题交给一个递归解析器(recursive resolver)——运营商或公共 DNS 服务商提供的那台服务器。
第一层是递归:解析器替你去跑腿。它先问根域名服务器(root server)“.com 该找谁”,再问 .com 的顶级域服务器“example.com 该找谁”,最后问到托管这个域名的权威服务器(authoritative server)。
第二层是权威:只有权威服务器手里握着你亲自配置的那条记录,它回出最终 IP 和一个 TTL。这是唯一的“官方答案”,其他环节给的都只是转述。
第三层是缓存:递归解析器拿到答案后,按 TTL 存一份;根和顶级域返回的指路信息同样会被缓存。下次有人问同一个域名,直接甩出缓存副本,省掉整趟往返。
打个比方:你要查某家公司的电话。你不知道号码,于是问前台(递归解析器);前台也不知道,就翻黄页总目录(根)、再翻地区分册(顶级域),最后打给这家公司本身(权威服务器)拿到准确号码。前台把号码抄在便签上贴起来——便签的有效期就是 TTL。
TTL 决定你要等多久
TTL 越短,改完生效越快;越长,旧答案被缓存得越久。这里有个反直觉的点:把 TTL 调小,并不会立刻影响已经缓存出去的旧副本,你得等旧那份自然过期。所以做迁移、切流量时,正确姿势是提前一段时把 TTL 调低,等旧缓存失效,再改记录。
| 层 | 角色 | 手里有什么 | 是否缓存 |
|---|---|---|---|
| 递归解析器 | 替你跑腿的代办 | 各类记录的缓存副本 | 会,按 TTL |
| 根 / 顶级域服务器 | 指路的分册 | 下一级该问谁 | 会,按 TTL |
| 权威服务器 | 记录的出处 | 你配置的真实记录 | 不缓存,只回答 |
两个容易混的地方
域名注册商(registrar)管的是“这个域名归你”;DNS 托管商 / 权威服务器管的是“这个域名解析到哪”。两者常常不是同一家,改解析要去后者找。
DNS 缓存存的是“域名 → IP”这个映射;浏览器缓存、CDN 缓存存的是内容本身。清浏览器缓存,不会让 DNS 记录提前生效。
对不同人的意义
对从业者:变更域名相关配置时,TTL 是一条时间预算。切流量、换服务器、下线旧 IP,都要把“旧记录还会被缓存多久”算进窗口期,别指望改完就立刻生效。
对普通人:改完解析觉得“没生效”,不妨等一会儿,或者换个网络环境试试。各服务商的控制台与帮助文档对生效时间有各自说明,以官方页面为准。
