DNS預解析prefetch


前面的話

  本文將詳細介紹DNS預解析prefetch的主要內容

 

概述

  DNS(Domain Name System, 域名系統),是域名和IP地址相互映射的一個分布式數據庫。DNS 查詢就是將域名轉換成 IP 的過程,這個過程短的話 2ms 幾乎無感,長則可能達到幾秒鍾

  當瀏覽器訪問一個域名的時候,需要解析一次DNS,獲得對應域名的ip地址。在解析過程中,按照瀏覽器緩存系統緩存路由器緩存ISP(運營商)DNS緩存根域名服務器頂級域名服務器主域名服務器的順序,逐步讀取緩存,直到拿到IP地址

  DNS Prefetch,即DNS預解析就是根據瀏覽器定義的規則,提前解析之后可能會用到的域名,使解析結果緩存到系統緩存中,縮短DNS解析時間,來提高網站的訪問速度

 

使用

  現代瀏覽器在 DNS Prefetch 上做了兩項工作:

  1、html 源碼下載完成后,會解析頁面的包含鏈接的標簽,提前查詢對應的域名

  2、對於訪問過的頁面,瀏覽器會記錄一份域名列表,當再次打開時,會在 html 下載的同時去解析 DNS

  DNS預解析分為以下兩種:

【自動解析】

  瀏覽器使用超鏈接的href屬性來查找要預解析的主機名。當遇到a標簽,瀏覽器會自動將href中的域名解析為IP地址,這個解析過程是與用戶瀏覽網頁並行處理的。但是為了確保安全性,在HTTPS頁面中不會自動解析

【手動解析】

  在頁面添加如下標記

<link rel="dns-prefetch" href="//img.alicdn.com">

  上面的link標簽會讓瀏覽器預取"img.alicdn.com"的解析

  希望在HTTPS頁面開啟自動解析功能時,添加如下標記

<meta http-equiv="x-dns-prefetch-control" content="on">

  希望在HTTP頁面關閉自動解析功能時,添加如下標記

<meta http-equiv="x-dns-prefetch-control" content="off">

  並非所有頁面都要手動解析,一般在整個站點的入口頁做這個工作就行了,畢竟一個站點下用到的大多數域名都會在首頁體現

 

作用

  DNS Prefetch有效縮短了DNS的解析時間

  如果瀏覽器最近將一個域名解析為IP地址,所屬的操作系統將會緩存,下一次DNS解析時間可以低至0-1ms。 如果結果不在系統本地緩存,則需要讀取路由器的緩存,則解析時間的最小值大約為15ms。如果路由器緩存也不存在,則需要讀取ISP(運營商)DNS緩存,一般像taobao.combaidu.com這些常見的域名,讀取ISP(運營商)DNS緩存需要的時間在80-120ms,如果是不常見的域名,平均需要200-300ms。一般的網站在運營商這里都能查詢的到,所以普遍來說DNS Prefetch可以給一個域名的DNS解析過程帶來15-300ms的提升,尤其是一些大量引用很多其他域名資源的網站,提升效果就更加明顯了

  瀏覽器底層緩存進行了建模,當Chrome瀏覽器啟動的時候,就會自動的快速解析瀏覽器最近一次啟動時記錄的前10個域名。所以經常訪問的網址就沒有DNS解析的延遲,打開速度更快

 

最后

  DNS Prefetch 是對網頁性能優化的一個通用方案,對國際化的站點來說可能效果更加明顯。學習成本和理解成本低,可以放心大膽地用到自己的網頁上

  以小火柴的前端小站為例

<link rel="dns-prefetch" href="//api.xiaohuochai.cc"/>
<link rel="dns-prefetch" href="//static.xiaohuochai.site"/>
<link rel="dns-prefetch" href="//demo.xiaohuochai.site"/>
<link rel="dns-prefetch" href="//pic.xiaohuochai.site"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM