前端性能优化-域名解析

为何要进行域名解析

使用域名是为了用户更加友好的访问目标网站,好比你想访问百度进行搜索一些本身想要的东西,你是记www.baidu.com容易呢,仍是记61.135.169.121这个IP容易呢,很明显是前者。可是对计算机而言,直接访问IP地址会更快,效率会更高,由于域名须要域名解析服务器进行解析,最后仍是转换成IP地址。域名解析这个过程须要花费20~500ms不等,500ms是什么概念啊,地球的半径是4万公里,电信号在光纤中的传播速度大约是200000km/s,500ms一个电信号能够绕地球跑2.5圈,可见域名解析的效率有多低。chrome

image

域名解析的过程

咱们经过一个Linux中自带的dig命令来看一下,解析www.kuwo.cn域名的整个过程。浏览器

在Linux下执行:$ dig +trace www.kuwo.cn,执行结果以下图:缓存

image

咱们分步来看,服务器

  • 第一步先获取全球13台根域名服务器其中一台的IP地址,由于13台根域名服务器的IP是固定,因此不须要花额外的时间。本例中获取到的IP是:192.168.210.118
  • image
  • 第二步经过根域名服务器:k.root-servers.net获取.cn.域的IP地址为:193.0.14.129,共花费226ms。
  • image
  • 第三步经过cn域名服务器:a.dns.cn.获取到kuwo.cn.域名的IP地址:203.119.25.1,共花费4ms。
  • image
  • 第四步经过ns4.koowo.com域名服务器获取到www主机的IP地址:60.29.225.22,共花费1ms。
  • image 

这就是域名解析的全过程,共花费了231毫秒,时间比较长。fetch

如何优化域名解析

咱们知道域名解析是把域名转换成IP地址,再与目标主机进行通讯,因此咱们只须要把域名所对应的IP地址记录下来,下次直接使用,就不须要再走上面那么繁复的步骤了。优化

在HTML的<head>中添加以下的标签:<link href="http://x.kuwo.cn" rel="dns-prefetch" />,那么下次浏览器再次访问目标网站的时候,就能够直接使用,不须要重复解析了。网站

如何查看域名解析的状况

在Chrome浏览器咱们能够看到域名解析的使用状况,包括域名被缓存的百分比,哪些域名的解析过长等等.net

在浏览器的地址栏输入:chrome://histograms/DNS.PrefetchQueue3d

结果以下图所示:server

image

可见在我本地系统中,有66.9%的域名被浏览器缓存直接使用,没有花费时间

相关文章
相关标签/搜索