如上图所示,普通用户打开一个网页的时间主要由四部分组成:
网站域名通过 DNS 服务器解析到IP地址的时间通过IP地址和服务器建立HTTP连接的时间服务器接受连接请求后进行计算的时间网页内容通过HTTP协议传输到用户的时间
在上图中,DNS域名解析时间占了整个访问时间的1/3强,严重拖慢了用户打开网页的速度。
作为一个站长,一定希望自己网站的打开速度足够快,以免访问者因为失去耐心而关闭浏览器。
本文将介绍如何缩短网站域名的DNS解析时间,来让访问者更快的打开你的网站。
一、域名的DNS解析过程
将一个域名解析成IP地址,主要由以下几个步骤:
将域名解析请求发送给本地的域名服务器 (DNS Server) 。域名服务器 (DNS Server) 收到请求后,先查询本地缓存,如果有该域名的纪录项,则直接返回目标IP地址。如果本地缓存中没有,则直接发送请求给根域名服务器 (Root Name Server) 。
根域名服务器 (Root Name Server) 返回给本地域名服务器 (DNS Server) 一个所查询域的主域名服务器 (gTLD Server) 地址。本地域名服务器 (DNS Server) 再向上一步返回的 TLD 服务器发送请求。
接受请求的 TLD 服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器 (Name Server) 的地址。正常情况下 Name Server 会有相应的记录,并返回给 DNS Server 。本地 DNS Server 根据域名的TTL值,把返回的结果保存到缓存,同时将解析结果返回给客户机。二、缩短域名的DNS解析时间
知道了域名的DNS解析过程,就可以采取相应的措施,缩短解析时间,我们所能影响和选择的方面主要包括缓存、本地DNS Server和域名的Name Server。
1、增加域名的缓存命中率
如果访问者访问网站时,域名在本机或当地的DNS Server缓存中,则可以大大加快该域名的解析时间。
以下方法可以增加域名在DNS Server中的缓存命中率:
提高网站的访问量。
网站的访问量越高,意味着网站域名被请求解析的次数越多,则该域名被DNS Server缓存的几率就越大。增加域名A记录和CName的TTL (Time-To-Live) 值。
TTL就是一条域名解析记录在DNS Server中的存留时间和过期时间。增大TTL值可以让DNS Server缓存该域名更长时间,增加缓存的命中率。TTL一般默认为一小时,可以根据实际情况设为一天甚至一周以上。
当然,如果你域名的IP经常变化,则TTL不应过大,否则各地的DNS Server会暂时无法获得新的正确的IP地址。
下图是两个网站采用相同服务器、相同IP、相同网页内容,不同的TTL值在同一天内的监控结果。
图一:TTL设为一小时
图二:TTL设为一周
可以注意到,图二中域名DNS解析所花的时间可以忽略不计,这就是域名A记录TTL时间长,增加了缓存的命中率带来的加速效果。
2、选择更快的本地DNS Server
一般而言,我们无法决定用户使用何种DNS Server,大部分初级用户使用的是本地ISP自动获取的DNS Server,部分用户则使用第三方DNS Server比如Open DNS或者Google DNS。
不过你可以建议你的用户使用Google DNS (8.8.8.8 和8.8.4.4),该DNS Server会比电信或网通自动获取的DNS Server快许多。
3、选择更快的域名Name Server
在域名的whois信息中,我们可以看到域名的Name Server,不同的Name Server有不同的域名管理面板用来管理A记录和CName等信息。
由于一般的站长无法在全世界建立Name Server的镜像,所以我们只能选择离目标访客物理距离近的Name Server以加快访客的解析速度。
比如你的网站主要浏览量来自中国,则你的Name Server最好也在中国境内,最好是电信和网通双线的。如果你的网站主要浏览量来自美国,则你可以用Godaddy的Name Server。
不过近年来宫信步势大,大量域名都转移至了国外,而国内缺少免费、稳定的第三方Name Server,使得这个问题很难解决。Godaddy的免费Name Server,国内解析起来实在很慢,也许我们可以期待无所不能的Google将来提供免费的Name Server给我们。
三、结论
本文通过理解域名的DNS解析过程,选择我们所能影响的因素,采取对应且免费的措施来加快域名的DNS解析时间,使得访客有更快的打开速度和更好的用户体验。
原文链接:https://www.cnblogs.com/see7di/archive/2011/06/12/2239766.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/21866