Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DNS TTL 值理解及配置 - Jamin Zhang #70

Open
eightHundreds opened this issue Apr 22, 2022 · 0 comments
Open

DNS TTL 值理解及配置 - Jamin Zhang #70

eightHundreds opened this issue Apr 22, 2022 · 0 comments

Comments

@eightHundreds
Copy link
Owner

我们有配置域名时,不同情况下,不同业务下,需要增大或减小 DNS TTL 值。这是为什么呢? 这需要我们重新理解下 DNS TTL 值的含义。

TTL(Time-To-Live),就是一条域名解析记录在 DNS 服务器中的存留时间。
当各地的 DNS 服务器接受到解析请求时,就会向域名指定的 NS 服务器发出解析请求从而获得解析记录;
在获得这个记录之后,记录会在 DNS 服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,
DNS 服务器将不再向 NS 服务器发出请求,而是直接返回刚才获得的记录;
而这个记录在 DNS 服务器上保留的时间,就是 TTL 值。

1. 增大 TTL 值,以节约域名解析时间,给网站访问加速

一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。
我们完全可以增大域名记录的 TTL 值让记录在各地 DNS 服务器中缓存的时间加长,
这样在更长的一段时间内,我们访问这个网站时,本地 ISP 的 DNS 服务器就不需要向域名的 NS 服务器发出解析请求,
而直接从缓存中返回域名解析记录。

国内和国际上很多平台的 TTL 值都是以秒为单位的,很多的默认值都是 3600,也就是默认缓存 1 小时,
这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?
您可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成 86400。
Godaddy 的 TTL 设置比较直观,但总共只有 5 个值可以选定,即使切换到高级设置模式也是如此,有点死板了。
网站赢利环境所迫,LifeTyper.com 的 TTL 值是设置成了最大值 1 周,
设置成更大的值可能会有写不必要的麻烦,例如当您要更换空间时,这些旧的记录要很久才过期并被更新。

2. 减小 TTL 值,以减少更换空间或域名更改时的不可访问时间

更换空间 99.9% 会有 DNS 记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效。
结果就是有的人可能访问到了新服务器,有的人访问到了旧服务器。仅仅是访问的话,这也不是什么大问题,但如果涉及到了邮件发送,
这个就有点麻烦了,说不定哪封重要信件就被发送到了那已经停掉的旧服务器上。

为了尽可能的减小这个各地的解析时间差,合理的做法是:

1)先查看域名当前的 TTL 值,我们假定是 1 天。
2)修改 TTL 值为可设定的最小值,可能的话,建议为 1 分钟,就是 60。
3)等待一天,保证各地的 DNS 服务器缓存都过期并更新了记录。
4)设置修改新记录,这个时候各地的 DNS 就能以最快的速度更新到新的记录。
5)确认各地的 DNS 已经更新完成后,把 TTL 值设置成您想要的值,TTL=60 还是太小了点。

上面配置的前提:

记住,这一切都能起作用的前提,是那些 DNS 服务器完全遵守这些标准和规范,
否则 NS 服务器上怎么设置 TTL 都是白搭,但目前来看还没发现这么不讲规矩的 DNS 服务器。

问题是,没有真正意义上的高速 NS 和 DNS 服务器。就像这里提到的,Godaddy 在国外评测拿到最高分, 而在国内使用时速度比万网快不了多少;
万网在国内速度表现突出,在国外的评测网站中得分却可能很低。
如果您有钱像 Google、微软那样在全世界部署大量的 CDN 加速服务器和 NS 服务器,那当然没问题,
问题是这对绝大部分网站来说都不可能,国内国外不是不可兼得,而是很难。

也许有人以为可以通过给域名指定两个 NS 记录(一个国内一个国外)来提高解析速度,但这也是不可能的,
因为只有在 DNS 服务器从第一个 NS 服务器那里获取记录失败时才会向第二个 NS 服务器发送解析请求。
我所知道的一个最廉价和有效的提速方法,就是修改刚才上面说的域名记录的 TTL 值。

TTL 值设置
https://jaminzhang.github.io/dns/DNS-TTL-Understanding-and-Config/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant