换了服务器后 DNS 多久生效?TTL 怎么看、解析记录多久能刷新
换了服务器、把网站搬到新 IP 之后,最常被问的一句就是「我已经改了域名解析,为什么有些地方还打不开、还在访问旧服务器?」。答案基本都归结到同一个概念:TTL。域名解析的生效快慢,取决于这条记录原来的 TTL 设了多长,以及你改的是「单条解析记录」还是「整个域名的 DNS 服务器」。
先分清两种「生效时间」,差了好几个数量级
「DNS 多久生效」其实对应两件完全不同的事,别混在一起:
一是改解析记录(A 记录指向新 IP)。 比如换服务器后,把 www.example.com 的 A 记录从旧 IP 改成新 IP。这种变更生效是「分钟级」的,受 TTL 影响。新增一条记录,通常在 5–30 分钟内全球生效;修改已有记录,则要等这条记录原来的 TTL 到期、各级 DNS 缓存里的旧值被丢弃后才会刷新。
二是改域名服务器(NS 记录)。 比如把整个域名的解析托管到新的 DNS 服务商(将域名解析托管到宝塔 中,就是把 NS 改成 ns1.baotadns.com 和 ns2.baotadns.com)。这种变更不是分钟级,而是一般 24–48 小时内生效——因为改的是「谁来负责解析这个域名」,全球各递归服务器都要重新确认一遍权威服务器。
如果你只是换了服务器 IP,通常只涉及第一种;只有在换 DNS 服务商、换注册商时才会遇到第二种。
TTL 是什么:一条记录在缓存里「存活」多久
DNS(Domain Name System)把好记的域名(如 example.com)转换成计算机能识别的 IP 地址。为了少来回查询,从本地电脑、路由器到运营商递归服务器,各级都会把解析结果缓存一段时间,这段时间就是 TTL(Time To Live,生存时间)——它决定了一条 DNS 记录在缓存里保存多久(概念见域名解析总览与记录类型说明)。
TTL 数值越大,缓存越久、查询越省,但改了之后旧值也越难被刷新;数值越小,改动生效越快,但查询量会变多。常见档位大致是:
| TTL | 适用场景 |
|---|---|
| 60 秒 | 频繁变动的记录,追求快速生效 |
| 300 秒(5 分钟) | 常用档位,平衡生效速度和性能 |
| 3600 秒(1 小时) | 稳定记录,减少 DNS 查询 |
| 86400 秒(24 小时) | 很少变动的记录 |
在设置解析记录时,TTL 字段就是填的这个缓存时间。具体每条记录的默认 TTL 数值,以域名解析后台添加记录时的页面显示为准。
为什么改了之后,各地生效时间不一样
解析记录不是「按下保存就全球同步」,它受四类因素影响(见域名解析总览与记录类型说明):
- TTL 设置:较短的 TTL 生效更快,这是你能主动控制的。
- DNS 缓存:各级 DNS 服务器都会按 TTL 缓存结果,没到期的旧值还会继续被返回。
- 网络环境:不同地区、不同运营商的 DNS 更新速度不同,所以会出现「自己这儿已经生效了、别处还慢一步」。
- 记录类型:不同类型的记录传播速度可能不同。
这也解释了为什么经常是「改完本地马上生效、外地还要等一会儿」——不是解析没改成功,而是各地缓存刷新的节奏不一致。
想换服务器,就提前把 TTL 调小
既然生效快慢主要卡在 TTL 上,正确的做法是在动手之前先调小 TTL:
- 变更前,把要迁移的域名解析记录 TTL 调到较小值(例如 60 秒),让它先「跑一会儿」。
- 变更时,把 A 记录改成新服务器的 IP。
- 变更后,等确认各地都已生效、访问稳定,再把 TTL 调回正常值。
这样能缩短旧缓存值被继续使用的时间,让新值更快被各地 DNS 取到。这一步尤其适合「换服务器」这类会切 IP 的操作,避免切换瞬间部分用户还打到旧服务器。
怎么确认解析已经在各地生效
改完之后,与其反复「刷新浏览器问别人」,不如直接看解析结果。可以用宝塔拨测的 DNS 方式,让分布在全国的节点各解析一次目标域名,看各节点解析到的 IP 是不是已经统一成了新值——如果还有节点解析到旧 IP,就说明那些地区的缓存还没过期,再等一等即可。
本文讲的是「解析多久生效」这一件事;如果想了解域名解析记录有哪几种、各自管什么,可参考域名解析总览与记录类型说明里对 A、AAAA、CNAME、MX、TXT、NS、SRV、CAA 等记录类型的说明。
常见问题
换了服务器、改了 A 记录指向新 IP,多久能生效?
新增一条解析记录,通常在 5–30 分钟内全球生效;如果是修改已有记录、把 A 记录指向新的 IP,生效时间要看这条记录原来的 TTL——要等各级 DNS 缓存里的旧值过期后才会刷新成新值,可能比新增更久。
TTL 是什么?数值越大越好吗?
TTL(Time To Live)是 DNS 记录的生存时间,决定这条记录在各级 DNS 缓存里保存多久。数值越小,修改后各地生效越快,但会增加 DNS 查询量;数值越大越稳定、查询越少,但变更后生效越慢。两者是取舍关系,不是越大越好。
整个域名换 DNS 服务器(NS)要多久生效?
把域名的 NS 记录改到新的 DNS 服务商(例如改到宝塔 DNS 的 ns1.baotadns.com、ns2.baotadns.com),一般要 24–48 小时才能在全球生效,比改单条解析记录慢得多。
怎么让解析变更尽快生效?
变更前先把相关记录的 TTL 调小(例如设成 60 秒),等变更完成后再调回正常值。这样可以缩短旧缓存值被继续使用的时间,让新值更快被各地 DNS 取到。
怎么确认解析已经在各地生效?
可以用宝塔拨测(t.bt.cn)的 DNS 方式,让分布在全国的节点各解析一次目标域名,看各节点解析到的 IP 是否已经是新值;如果还有节点解析到旧 IP,说明部分地区的缓存还没过期。