前端優化系列之一:DNS預獲取 dns-prefetch 提升頁面載入速度


DNS Prefetch,即DNS預獲取,是前端優化的一部分。一般來說,在前端優化中與 DNS 有關的有兩點: 一個是減少DNS的請求次數,另一個就是進行DNS預獲取

DNS 作為互聯網的基礎協議,其解析的速度似乎很容易被網站優化人員忽視。現在大多數新瀏覽器已經針對DNS解析進行了優化,典型的一次DNS解析需要耗費 20-120 毫秒,減少DNS解析時間和次數是個很好的優化方式。DNS Prefetching 是讓具有此屬性的域名不需要用戶點擊鏈接就在后台解析,而域名解析和內容載入是串行的網絡操作,所以這個方式能 減少用戶的等待時間,提升用戶體驗

默認情況下瀏覽器會對頁面中和當前域名(正在瀏覽網頁的域名)不在同一個域的域名進行預獲取,並且緩存結果,這就是隱式的 DNS Prefetch。如果想對頁面中沒有出現的域進行預獲取,那么就要使用顯示的 DNS Prefetch 了。

目前大多數瀏覽器已經支持此屬性,支持版本如下:

  • – Safari: 5+
  • – Chrome: All
  • – Firefox: 3.5+
  • – Opera: Unknown
  • – IE: 9+ (called “Pre-resolution” on blogs.msdn.com)

其中 Chrome 和 Firefox 3.5+ 內置了 DNS Prefetching 技術並對DNS預解析做了相應優化設置。所以 即使不設置此屬性,Chrome 和 Firefox 3.5+ 也能自動在后台進行預解析 。

目前很多大型站點也應用了這一優化,例如:

淘寶:

支付寶:

網易:

DNS Prefetch 應該盡量的放在網頁的前面,推薦放在 <meta charset="UTF-8"> 后面。具體使用方法如下:

<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//www.zhix.net">
<link rel="dns-prefetch" href="//api.share.zhix.net">
<link rel="dns-prefetch" href="//bdimg.share.zhix.net">

 

需要注意的是,雖然使用 DNS Prefetch 能夠加快頁面的解析速度,但是也不能濫用,因為有開發者指出 禁用DNS 預讀取能節省每月100億的DNS查詢 。

如果需要禁止隱式的 DNS Prefetch,可以使用以下的標簽:

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

 


免責聲明!

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



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