如何缩短域名的 DNS 解析时间
为了提高网页的打开速度,我们一般选择使用CDN,利用“就近原则”让用户在最短的时间内获得服务器资源。明显地。这也是国外空间打开速度远不及国内主机访问速度的原因。
我们知道,当用户访问一个网站时,他们必须经过域名的DNS解析过程。很多人可能不太关心 DNS 解析时间。性能稳定、响应速度快的DNS域名解析服务可能与响应时间不稳定、响应速度慢的DNS域名解析服务相差1秒。对于域名解析请求过多的网站去跳转短链接,这个时间积累的非常多。
一、 域名DNS解析原理及流程
1、DNS 是怎么来的?DNS 是域名系统的首字母缩写。Internet 上的域名和 IP 地址是一对一的(或多对 一))。虽然域名很容易让人记住,但机器只能知道彼此的IP地址。它们之间的转换称为域名。解析,域名解析需要由专门的域名解析服务器来完成,DNS就是域名解析的服务器。
2、DNS解析基本流程1:查找本地域名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解析基本流程3:顶级域名服务器收到请求后检查区域文件记录。如果没有,则告知其管辖范围内的主域名(不带任何前缀的域名,如)的本地IP地址。DNS 服务器。如果还是没有找到,进入下一级域名服务器搜索。重复此操作,直到找到正确的结果。
6、本地域名服务器在找到与域名对应的正确IP地址后,将返回的结果保存在缓存中以备下次使用,并将结果反馈给客户端。客户端通过此 IP 地址与 Web 服务器通信。建立链接。这样你的浏览器就可以正常访问网站了。下图举例说明用户访问谷歌时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服务器会暂时无法获取到新的正确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 requests 对于百万级别以上的网站,DNS 加速的效果是显而易见的。另外,如果你发现你的网站响应速度太慢,不妨检查一下页面的DNS时间。
2、除了从网站本身的DNS解析来加快访问速度外,我们通常在选择DNS服务时尽量使用那些稳定可靠的DNS服务。此类 DNS 服务的响应速度和缓存率非常好。如果你的网站拆分成多个二级域名,不妨好好使用CNAME,设置好TTL时间,保证网站的第一解析可以直接从运营商的DNS缓存中获取。