前端性能優化-域名解析

爲何要進行域名解析

使用域名是爲了用戶更加友好的訪問目標網站,好比你想訪問百度進行搜索一些本身想要的東西,你是記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%的域名被瀏覽器緩存直接使用,沒有花費時間

相關文章
相關標籤/搜索