如何缩短域名的 DNS 解析时间

如何缩短域名的 DNS 解析时间,第1张

提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的。这也就是为什么国外的空间打开速度远不及国内的主机的访问速度的原因了。

我们知道在用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意。性能稳定、响应时间快的DNS域名解析服务与不稳定、响应过慢的DNS的域名解析时间可能相差1秒,而对于网站存在过多的域名解析请求,这个时间积累起来就非常地多了。

一、域名DNS解析原理和过程

1、DNS是怎么来的?DNS 是域名系统 (Domain Name System) 的缩写。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

2、DNS解析的基本过程一:查找本地域名DNS缓存。当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址,例如计算机系统Hosts文件域名对应IP、路由器缓存、ISP(互联网服务提供商)DNS缓存。

3、DNS解析的基本过程二:通过上面的DNS查询依然没有找到想你的域名对应的IP地址,那么就要进入根服务器进行查询。全球共有13台根逻辑域名服务器。这13台逻辑根域名服务器中名字分别为“A”至“M”,真实的根服务器在2014年1月25日的数据为386台,分布于全球各大洲。

4、在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息。根域名服务器会将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器,这样你的域名查询请求会进入到相应的顶级域名服务器。

5、DNS解析的基本过程三:顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名(不带任何前缀的域名,如freehao123.com)服务器的IP地址告诉本地DNS服务器。如果还是没有找到,则进入到下一级域名服务器进行查找。如此重复,直到找到正确的结果为止。

6、查找到正确的域名对应IP地址后,本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。于是你的浏览器就正常访问网站了。下图是对Google.com为例,解释用户在访问谷歌时DNS解析的全过程。(点击放大)

二、浏览器加载网页的基本过程

1、从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请求头信息通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理。

2、览器加载显示html的顺序是:从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。如果遇到语义解释性的标签嵌入文件(JS脚本,CSS 下载过程会启用单独连接进行下载,并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。(点击放大)

3、什么原因会导致网页加载过慢?浏览器可以在下载CSS资源的同时,并行解析HTML文件,但是,一旦发现有脚本文件的引用,则必须等待脚本文件完成下载并且执行后才能继续解析。内容下载时间主要取决于用户带宽、服务器带宽、文件大小、文件数量等。

三、合理利用DNS TTL值 增加域名的缓存命中率

1、DNS 服务器采用递归或迭代来处理客户端查询时,它们将发现并获得大量有关 DNS 命名空间的重要信息。然后这些信息由服务器缓存。缓存为 DNS 解析流行名称的后续查询提供了加速性能的方法,同时大大减少了网络上与 DNS 相关的查询通信量。

2、TTL(Time-To-Live)即一条域名解析记录在DNS服务器上缓存时间。当信息缓存时,生存时间 (TTL) 值适用于所有缓存的 RR。只要缓存 RR 的 TTL 没有到期,DNS 服务器就可继续缓存并再次使用 RR 来应答与这些 RR 相匹配的客户端提出的查询。

3、适当地增大TTL值可以让DNS Server缓存该域名更长时间,增加缓存的命中率。TTL一般默认为一小时,可以根据实际情况设为一天甚至一周以上。当然,如果你域名的IP经常变化,则TTL不应过大,否则各地的DNS Server会暂时无法获得新的正确的IP地址。

四、合理使用DNS-prefetch让DNS预读取

1、从上面浏览器加载网页的过程可以看出,网页的请求是可以多任务同时进行的,对于网页有多个DNS请求的情况,可以让浏览器在后台先把要使用的DNS请求默默地完成,这样当用户在打开新的网页时,就可以节省DNS查询的时间了。

2、控制浏览器的DNS预读取就是DNS-prefetch标签了,DNS Prefetch应该尽量的放在网页的前面,格式类似是:

很多网站都使用使用百度广告联盟代码,使用这个就可以预读取DNS了。

3、默认情况下浏览器会有隐式的DNS Prefetch,即会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,我们可以通过下面的标签禁止隐式的DNS Prefetch:

4、需要注意的就是,DNS Prefetch只需要在用户在第一次打开网站时使用即可,没有必要每个页面都使用DNS Prefetch,否则就是重复DNS读取了,反而还无形中增加了DNS查询的次数,效果适得其反。

五、DNS域名解析拆分为多个域名增加并行下载量

1、一般来说网页的内容加载时会发生多个域名请求服务,如果你的网站JS、CSS、图片等非常多的话,建议将这些文件分别放在不同的域名上,这样浏览器在打开某一个页面时就可以同时向这些域名发送DNS解析请求了,能在一定程度上减少DNS时间。(点击放大)

2、网页的内容越多,分析的域名应该尽量多一些。例如html、htm,js、css,jpg、png、gif,php、asp都可以放在不同的域名上。在实际应用上,使用全站CDN或者是静态文件CDN就可以实现上述效果,并且结合css sprite一起来使用的。

3、css sprite的作用恰恰相反,它不是增加域名请求,而减少域名DNS请求,主要是用在图片上。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。

六、加快域名DNS解析速度方法小结

1、本文介绍的用DNS缓存、DNS预读取、拆分域名来减少域名DNS解析的时间的方法,对于一般的网站的加速效果可能并不明显,但是对于一些每天DNS请求达到上百万级以上的网站,DNS加速的效果就显而易见了。另外,如果发现自己的网站响应速度过慢,不妨好好检查一下网页的DNS用时。

2、除了从网站本身的DNS解析来加快访问速度外,我们平常在选择DNS服务时尽量使用那些稳定可靠的DNS服务,这样的DNS服务响应速度和缓存率都是非常不错的。假如自己的网站分拆了多个二级域名,不妨好好用用CNAME,设置好TTL时间,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到。

作为一个站长,一定希望自己网站的打开速度足够快,以免访问者因为失去耐心而关闭浏览器。 本文将介绍如何缩短网站域名的DNS 解析时间,来让访问者更快的打开你的网站。 一、域名的DNS 解析过程 将一个域名解析成IP 地址,主要由以下几个步骤: 1. 将域名解析请求发送给本地的域名服务器 (DNS Server) 。 2. 域名服务器 (DNS Server) 收到请求后,先查询本地缓存,如果有该域名的纪录项,则直接返回目标IP 地址。 3. 如果本地缓存中没有,则直接发送请求给根域名服务器 (Root Name Server) 。 根域名服务器 (Root Name Server) 返回给本地域名服务器 (DNS Server) 一个所查询域的主域名服务器 (gTLD Server) 地址。 4. 本地域名服务器 (DNS Server) 再向上一步返回的 TLD 服务器发送请求。 接受请求的 TLD 服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器 (Name Server) 的地址。 5. 正常情况下 Name Server 会有相应的记录,并返回给 DNS Server 。 6. 本地 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 给我们。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/320049.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存