博客域名DNS解析优化

时不时的会使用网站测速工具测试下自己博客的打开速度,各种网站测速工具原理大致相同,展示的都是从各地打开被测站点所需要的总的时间。这个总时间是三方面的时间总和:域名解析(DNS)时间,访问者与网站服务器之间连接时间以及网站内容下载时间。

偶然间关注到我的博客站点域名解析所耗时间居然比连接时间和网站内容下载时间多很多。引起了我的警觉,决定研究(折腾)一番。

我的博客首页大小6KB,经过测试,(从各地访问我的博客)下载所需时间大约几十毫秒,服务器连接时间大约是几毫秒到几十毫秒不等。而域名的解析时间居然高达几百毫秒(大致估算了下解析平均耗时大约是500ms),这难以接受!

网站打开时间

如何提高,优化博客域名的解析时间,决定分理论和实验两步走。理论方面,全面学习了解下关于域名DNS解析的知识;实验方面,试用下常见的一些DNS域名解析服务(当然主要是免费的DNS域名解析服务)。

(对于个人博主,建议直接看实验方面的结论部分。直达

理论

当我们访问一个网站,在浏览器里输入网站的域名,相应的域名解析服务器(DNS服务器)会将域名解析成对应的ip地址,然后返回给浏览器。我们访问一个网站,实际是在访问一个基于ip地址提供的web服务(互联网早期三大经典应用ftp,www,e-mail背后都是ip地址)。

互联网里域名解析的体系及流程是这样的:

域名解析过程

1.用户在浏览器中输入域名“jiangyu.org”, 若本地浏览器没有缓存,则向LocalDNS发起请求。所谓LocalDNS一般为网络运营商提供的DNS服务,比如电信运营商的经典的114.114.114.114,各地区运营商的DNS(比如广东电信的202.96.128.86)。LocalDNS是域名解析的起点,电信运营商在这个领域有先天优势(他们提供的权威DNS解析服务能更快)。从这个角度考虑,这可能是众多云服务商都想推广自己的公共DNS的原因。比如百度云的180.76.76.76,阿里云的223.5.5.5,腾讯云(DNSPod)的119.29.29.29。

2-1.若LocalDNS服务器里缓存有域名jiangyu.org对应的IP地址信息,则直接向用户返回IP地址信息,如此即完成了一次域名查询解析服务。可以看出这个过程时间会非常短,对于个人博客,这是最好的情况。LocalDNS返回最终的结果(IP地址信息)给用户,这个过程被称为递归查询。

域名对应IP地址信息缓存在LocalDNS服务器的时间,是由TTL控制,TTL即time to live,是我们在域名解析(即使用权威域名服务器)时设置的,一般可以设置成几秒到几分钟不等,最长可以设置24小时(86400s)。

2-2.LocalDNS若完全无缓存,则采用迭代查询的方法,向各域名服务器进行查询。

2-2.1LocalDNS最开始向根域名服务器查询。根域名服务器并不知道jiangyu.org这个域名对应的具体IP,只是告知应该向.org TLD(Top Level Domain,顶级域名)查询。

2-2.2LocalDNS则紧接着询问.org顶级域名服务器,被告知应该询问AliDNS(jiangyu.org这个域名使用AliDNS提供的权威域名解析服务),它知道。

2-2.3LocalDNS则转向AliDNS这个权威域名服务器,获知了jiangyu.org域名对应的IP地址信息。

2-2.3.1LocalDNS将获取到的jiangyu.org对应的IP地址信息反馈给用户,并遵循TTL设置,将结果缓存起来。

综合以上,域名解析过程有这些要点:

  • 各层级的域名服务器都会缓存域名解析信息;
  • 不同地区的访问者越多,域名解析信息越能及时被缓存,用户感知到的解析时间会越短。TTL设置的越长(缓存时间越久),可能需求的解析时间也会越短;
  • 从域名解析时间角度考虑,个人博客站点(尤其首页)使用CDN可能并不是总是好的。因为访问量并不大,CDN IP地址多,如果没有及时缓存,可能致解析时间多变,久;
  • 电信运营商来做域名解析(权威域名服务器),有先天优势。用户的LocalDNS多用他的,路近道宽。实践中发现 www.ctyun.cn (电信天翼云)这个域名各地解析时间平均只需几十毫秒,甚至多个节点只需几毫秒。作为对比,阿里云( www.aliyun.com ),腾讯云( cloud.tencent.com )都是100-200ms,逊色不少。比较可惜,天翼云的DNS解析没有免费版;
  • DNS DDOS攻击多发生于权威域名服务器端;
  • DNS劫持多发生于LocalDNS服务器端;
  • 国外的权威域名解析服务(比如Cloudflare)有其优势,比如可能更靠近根域名服务器或者部分顶级域名服务器,但国内使用,单独看解析时间仍不理想。节点多位于中国境外,解析服务器与境内连接有网络带宽的瓶颈。

实验

通过前面理论分析,对于个人博客站点,要优化自己域名解析时间,唯一能做的就是选用合适的(解析速度快的)权威域名解析服务。主要是免费的域名解析服务。

目前提供免费域名解析服务(权威域名解析服务)的有:

  • 阿里云的云解析 DNS
  • 腾讯云的DNSPod
  • 华为云的云解析服务 DNS
  • Cloudflare的DNS

其中DNSPod应该是国内解析量最大的,日均解析量为1700亿次,其次是阿里云的云解析,日均解析量大约是1000亿次。Cloudflare的数据量不清楚,可能是世界范围内规模最大的域名解析服务。华为云的云解析服务可以免费使用其他家收费才提供的各种高级功能。

除了以上,其实各提供公有云服务的IDC均会提供域名解析服务,为快速实验比较计,仅测试以上主流的四种。

实验前提:

通过Whois查询工具,收集到使用不同域名解析服务的个人博客域名,同时加入使用对应收费版的域名解析服务的网站作为对比。因各博客及网站域名解析里的TTL缓存时间不明确,因而采用不同时间段,多次访问被测站点的办法测试,时间跨度持续约3个星期,以尽可能排除缓存干扰。

测速平台:https://tool.chinaz.com/speedtest/ (仅评估域名解析时间,连接时间及下载时间忽略)

实验结果:
(测试时间2024.4.10-4.30)

样本网站 DNS解析服务商 DNS服务器 服务器地域 解析耗时
Q博客 DNSPod免费版 cotangent.dnspod.net,group.dnspod.net 香港,日本,新加坡等地域 100-150ms
W博客 DNSPod免费版 clean.dnspod.net,clifford.dnspod.net 境内IP 100-150ms
M博客 DNSPod免费 kama.dnspod.net,lake.dnspod.net Cloudflare 500-800ms
Z网站 DNSPod付费版 ns3.dnsv5.com,ns4.dnsv5.com 境内CDN 50-100ms
S博客 阿里云DNS免费版 dns11.hichina.com,dns12.hichina.com 境内IP 200-300ms
H网站 阿里云DNS付费版 vip3.alidns.comvip4.alidns.com 境内CDN 100-150ms
J博客 华为云DNS解析 ns1.huaweicloud-dns.com, ns1.huaweicloud-dns.cn 境内IP 200-300ms
I博客 Cloudflare DNS jay.ns.cloudflare.com, kara.ns.cloudflare.com Cloudflare 500-800ms

(实验过程省略。)
上面解析耗时数据可以不用过多关注(不够严谨),直接看下面的结论。

结论

(主要针对个人博客站长)

  • 免费版域名解析服务解析时间波动较大(一般上午解析更快,下午及晚上较慢。当然解析服务本身是否稳定是另一个不确定因素),收费版的比较稳定;
  • 使用国外CDN(比如Cloudflare),服务器,所需域名解析时间会更久。使用临近中国大陆地域的服务器,比如中国香港,新加坡,日本等,所需解析时间会较短;
  • 更高级的收费功能(华为云DNS解析免费提供,其他家收费提供),比如负载均衡,更多的解析线路,更细致的地区划分,对于个人博客意义不大(个人博客不会部署那么多服务器);
  • CDN有种种好处,但从域名解析角度看,单IP更好;
  • 个人博客可以设置更长的TTL时间(24小时,86400s),以达到最好的缓存效果;
  • 使用某家的云服务器,然后使用同一家的域名解析服务,可能有更短的解析延时,更稳定的表现;

现在回到最开始的问题,我大概从2010年前后开始使用DNSPod的域名解析服务,彼时DNSPod还没有被腾讯收购。习惯使然或者其他因素,一直没考虑过更换或者尝试使用其他的域名解析服务。直到这次发现DNSPod延时居然这么久,测试一段时间后发现,各家免费的域名解析服务效果,性能,稳定性其实都差不太多。而DNSPod被我发现表现差,可能正巧这段时间其服务不太稳定。DNSPod对外公开的系统状态监控证实了我的这种猜想。可以看出DNSPod日正常解析量在1800亿次上下,而我测试期间(4月10-30日),有多次波动很大,最低到1400亿-1500亿次,最多减少了22%左右。

DNSPod近30天解析趋势

如此看来,免费的权威DNS服务器用得人多,对于服务商并非一定是好事(服务跟上,服务器数量,布局合理,技术更新等都需要花钱。当然想办法将免费用户转换成付费用户又是另一方面了)。对于云服务提供商,与传统电信运营商去竞争LocalDNS可能更有价值。

再论“天一生水”及河图洛书 梁思成《中国建筑史》

  评论

Nickname
Email
Website
0/500
  • 百度表情
  • 新浪微博
  • 脸书表情
26 comments

建议在内容中可以加一个辅助的DNS在线解析工具的链接,这样对读者更友好,符合边读边思考并测试验证的诉求。例如腾讯云CDN的这个工具:https://edgeone.ai/tools/dns-records
希望博主可以考虑。
感谢博主的分享,期待输出更多内容

广东
macOS Catalina
Chrome 133.0.0.0

主要还是看网站服务器配置!

北京
Windows 7
Chrome 86.0.4240.198

你的网站已经很快了啊,点一下,刷的一下就出来了:开心: 优化的真好

山东
iOS 17.5.1
Safari 17.5

:haha: 自从用国外的机器就很少用国内的服务 不挂飞机速度也能接受

陕西
Android Quince Tart
Chrome 125.0.0.0

我觉得都无所谓了。其实国内访问用哪家都问题不大。而我选择了cf。

北京
Android Upside Down Cake
Miui 18.2.200429

大多访客用的都是ISP服务商提供的DNS,优化空间不大~

北京
Windows 10
Microsoft Edge 124.0.0.0

是的。所以如有必要,使用天翼云的DNS解析服务是比较好的。

广东
Windows 10
Chrome 109.0.0.0

目前就用dnspod,没关注太多,不太拉胯就可以

广东
Windows 10
Microsoft Edge 120.0.0.0

原来如此

湖北
Windows 10
Firefox 125.0

ms级别的,个人感觉不会有太大区别……

湖北
Windows 10
Firefox 125.0

是的,毫秒级的基本是心理作用。:笑哭:

广东
Android Quince Tart
WeChat 8.0.49.2600

这也太细了,免费的能让我正常打开我就很满足了。
我清楚他们这些程序员,为了赚钱,免费与付费的区别可能只是加了定时器。。。

中国
Windows 10
Firefox 125.0

付费的SLA写的是100%,不是多少个就9。:笑哭: 只要解析服务器够多,布局合理,可靠性应该能保证的。

广东
Android Quince Tart
WeChat 8.0.49.2600

速度很好啊,基本秒开

北京
Windows 10
Chrome 124.0.0.0

因为用阿里云的服务器,域名解析用放在了云解析 DNS,感觉比之前dnspod省心。

广东
macOS Catalina
Safari 17.4.1

dnspod最近似乎很不稳定,4月份平均解析量有1700-1800亿,现在突然降到1400亿了。

广东
Windows 10
Chrome 109.0.0.0

定时找那些测速网站测下速就行了,他们各个地区的服务器都多。他们访问了,当地对应的一整个链条的dns缓存服务器都会缓存下来。不然就算你ttl设置了24小时,中间没人访问的话,过了24小时还是一样要重新向上一层层解析。

广东
macOS Catalina
Chrome 125.0.0.0

是的,不同地方都有人访问,才能及时的被缓存。
——

不同地区的访问者越多,域名解析信息越能及时被缓存,用户感知到的解析时间会越短

广东
Android Quince Tart
WeChat 8.0.49.2600

没有商业需求的话,这点时间可以忽略不计,数据加载的话可以使用异步。

江苏
Android Quince Tart
Microsoft Edge 123.0.0.0

你的站点打开速度超级快!

江苏
Windows 10
Firefox 125.0

域名解析方面已经是比较好了。留言和点赞功能有点拖累打开速度,没法优化,只能取舍了。

广东
Android Quince Tart
WeChat 8.0.49.2600

你的站点是比较简洁的,首页大小也小。上dns也比较麻烦些,主要是一些需要付费,我就不考虑了。

广西
Windows 10
Chrome 103.0.5060.66

感觉这几十毫秒是察觉不出来的吧。

江苏
Windows 10
Microsoft Edge 124.0.0.0

主要连接及下载都只需要几毫秒,域名解析需要大几百毫秒,不甘心。:大笑:

广东
Android Quince Tart
WeChat 8.0.49.2600

不明觉厉,能帮我测测我的速度还行么?

浙江
Windows 10
Microsoft Edge 124.0.0.0

挺快的。:双手鼓掌:

广东
Windows 10
Chrome 109.0.0.0

挺快的,一般国内阿里dns解析都非常快的,电信本省的dns有时候很迷。

河南
Windows 10
Microsoft Edge 124.0.0.0

这两个不是同类。电信本省的DNS属于localDNS,公共DNS,比如对应的阿里云的公共DNS,223.5.5.5。阿里云的域名DNS解析属于权威域名解析。localDNS是电信运营商提供的(电脑上一般自动获取的,除非你手动把自己电脑的DNS修改成其他公共DNS),所以他们如果同时提供域名解析有先天优势,域名解析可以更快。这可能是阿里,百度,腾讯都推广自己的公共DNS的原因。

广东
Windows 10
Chrome 109.0.0.0

之前还用过dnspod的解析,后来域名服务器都转到阿里云,就都用阿里云的服务了。

上海
Windows 10
Firefox 125.0

免费版,阿里云的比DNSpod要稳定。

广东
Windows 10
Chrome 109.0.0.0
Load more