TTL (生存时间)

DNS TTL(生存时间)是 DNS 记录中的一个值,它告诉 DNS 解析器在从权威域名服务器请求新数据之前,应该缓存查询结果多长时间。TTL 以秒为单位,在获取最新信息的需求和缓存的效率之间取得平衡。较长的 TTL 可以降低服务器负载并提高性能,而较短的 TTL 则确保更改能够更快地传播。

How it works

当 DNS 解析器向权威域名服务器查询一条记录时,它不仅会收到答案(例如 IP 地址),还会收到一个 TTL 值,指定该答案的有效期为多少秒。解析器会缓存这个答案,并在 TTL 过期之前将其重复用于后续查询。一旦过期,下一次查询将强制解析器从权威服务器获取新数据。

TTL 控制着缓存的 DNS 数据的生命周期: **缓存过程:** 1. **初始查询**: 解析器向权威服务器查询 example.com,收到 IP 192.0.2.1,TTL 为 3600 秒(1 小时) 2. **缓存**: 解析器将此结果存储在其缓存中 3600 秒 3. **缓存命中**: 在接下来的一小时内,对 example.com 的任何查询都将立即从缓存中获得答案,而无需联系权威服务器 4. **过期**: 3600 秒后,缓存的记录被视为过时 5. **刷新**: 过期后的下一次查询将强制解析器再次查询权威服务器,可能会收到更新的信息 **权衡:** **长 TTL(数小时或数天):** - ✓ 降低权威服务器的负载 - ✓ 更快的 DNS 解析(更多缓存命中) - ✓ 更低的网络流量 - ✗ 更改需要更长时间才能传播 - ✗ 过时的数据会被提供更长时间 **短 TTL(数分钟):** - ✓ 更改快速传播 - ✓ 信息更加及时 - ✗ 服务器负载更高 - ✗ 需要更多 DNS 查询 - ✗ 解析时间略慢

Key Points

  • TTL 始终以秒为单位(例如,300 = 5 分钟,86400 = 24 小时)
  • 较短的 TTL 值可实现更快的 DNS 更改传播,但会增加服务器负载
  • 较长的 TTL 值可提高性能并减少服务器查询,但会延迟更改传播
  • 最佳实践是为稳定记录设置 1-5 天(86400-432000 秒)
  • 在进行计划的 DNS 更改之前,将 TTL 降低到 5-15 分钟(300-900 秒)

Common Use Cases

  • 稳定的生产网站: 对于基础设施很少更改的成熟网站,使用较长的 TTL 值(24-48 小时),以最大限度地减少 DNS 查询并提高性能
  • 迁移前准备: 在服务器迁移或 DNS 更改前一天将 TTL 降低到 5-15 分钟,以确保在进行更改时快速传播
  • 开发环境: 对于 DNS 记录频繁更改且需要快速传播的测试和开发环境,使用较短的 TTL 值(5-10 分钟)
  • 负载均衡和故障转移: 较短的 TTL 值允许在服务器宕机或需要重定向流量时快速更新 DNS 记录

code 常见的 TTL 值

TypeHost / NameValue / Points toTTL
Value300 秒5 分钟
Value3600 秒1 小时
Value86400 秒24 小时
Value172800 秒48 小时

* TTL 值以秒为单位。根据 DNS 记录的更改频率以及需要更新传播的速度来选择。

Frequently Asked Questions

我的 DNS 记录应该使用什么 TTL 值?expand_more
对于大多数稳定的生产环境,推荐使用 1-5 天(86400-432000 秒)的 TTL。这可以提供良好的性能,同时允许合理的更改传播时间。使用 24 小时(86400)作为安全的默认值。如果经常进行更改,请使用 1 小时(3600)。对于动态环境或开发环境,请使用 5-15 分钟(300-900)。关键是在快速更新的需求与服务器效率和性能之间取得平衡。
我应该将 TTL 设置为 0 以实现即时更新吗?expand_more
不,永远不要将 TTL 设置为 0。零或非常低的 TTL(低于 30 秒)意味着解析器必须为每个请求查询您的权威服务器,导致巨大的服务器负载和较差的性能。许多 DNS 服务器还会强制执行最小 TTL,并会忽略低于其阈值(通常为 30-60 秒)的值。相反,应该提前计划,在进行更改之前将 TTL 降低到 5-15 分钟,然后在之后再提高。
如何以最小的停机时间更改 DNS 记录?expand_more
按照以下流程操作:(1) 在更改前至少 24-48 小时将 TTL 降低到 300-900 秒(5-15 分钟),以便旧的缓存记录过期。(2) 等待旧 TTL 完全过期。(3) 进行 DNS 更改。(4) 等待新的低 TTL 过期,以便更改传播。(5) 将 TTL 提高回正常值(例如 86400 秒)。这确保了更改快速传播,同时在之后保持良好的性能。
为什么我的 DNS 更改没有立即显示?expand_more
DNS 更改不是即时的,因为基于 TTL 的缓存。如果您的记录的 TTL 为 86400 秒(24 小时),那么在过去 24 小时内查询过您域名的任何人都缓存了旧值。他们要到缓存过期后才能看到新值 - 最多 24 小时后。此外,一些 ISP 会忽略 TTL 值,缓存时间超过指定时间。这就是为什么在进行更改之前降低 TTL 很重要 - 它减少了传播的最长等待时间。
TTL 会影响我的网站速度吗?expand_more
间接来说,是的。较长的 TTL 值可以提高 DNS 解析速度,因为查询是从缓存中获得答案,而不需要往返权威服务器。然而,差异通常只有几毫秒。较高 TTL 的主要性能优势是降低 DNS 服务器的负载,而不是提高最终用户的页面加载速度。一旦 DNS 解析完成,实际的网站加载速度取决于您的 Web 服务器的性能,而不是 TTL。