在设置TTL前我们需要先了解下什么是TTL:名称服务器不可能永久保存缓存数据,如果永久保存了当发生变更的时候记录无法进行传达。因此,通过定义一个生存时间(TTL),来定义数据在缓存中的存放时间,生存时间一到期,名称服务器就丢弃原有的缓存数据并从权威名称服务器获取新的数据。

TTL缓存

以阿里云(www.aliyun.com)为例,用户访问该网站,并不是每次都会向DNS服务器上获取域名解析。比如用户第一次访问阿里云(www.aliyun.com),会到DNS服务器上进行解析获取到阿里云(www.aliyun.com)对应的IP地址,用户从DNS服务器上获取的信息会缓存到当地的递归DNS服务器上。当第二个用户访问该网站时,递归服务器会直接返回解析结果,而不会再向DNS服务器请求解析。

那么问题来了,递归服务器上对应的该域名的DNS解析信息什么时候失效?什么时候会更新该域名的DNS解析信息?这就是由TTL值决定的。

TTL最佳值

TTL值设置的越小则生效越快。如果你在域名服务商修改了解析记录,同时TTL设置的值很小,生效的时间也会更快,那是不是设置的越小越好?其实不是,如果TTL值设置的很小,就会导致用户的访问、递归服务器每次都需要向DNS服务器进行解析请求,而权威服务器的解析要判断用户的来源进行智能解析,相对于用户直接从递归服务器上获取缓存解析的时间,要多得多,TTL值太小会影响用户的访问体验。

TTL的最佳值没有统一的标准,阿里云的默认TTL是600秒(10分钟),最大是1天;西部数据的TTL默认是900秒,范围是60秒~86400秒(1天),所以使用域名提供商默认的TTL值就行,如非必要不建议设置太小的TTL值。

什么时候需要设置小的TTL值

  1. 域名DNS解析值经常变动;
  2. 一些重要的域名,一旦发生记录不可达则损失很大,这时候TTL建议设置的小一些,可以及时完成变更。

什么时候需要设置大的TTL值

  1. 域名DNS解析记录不需要经常变动,如果不会经常变动则可以设置成12小时或者一天;
  2. MX、TXT、DKIM和SPF记录等,可以设置成最大值。

TTL值设置参考表格

IP是否经常变动 是否动态IP 宕机检测 服务架构 建议TTL值
热备、灾备、固定IP 3600
大型网站 60
不使用 单服务器 600
使用 多服务器 180
不使用 单服务器 300
不限 不限 120

对于一般网站而言,不经常变更服务器IP,不搭集群,一般设置600秒即可。 

参考链接:
DNS TTL最佳实践
域名解析TTL值详解及TTL设置多少合适