1. 程式人生 > >DNS預獲取(dns-prefetch)

DNS預獲取(dns-prefetch)

今天翻看twitter的原始碼的時候看到了一下內容:

<link rel=”dns-prefetch” href=”http://a0.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a1.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a2.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a3.twimg.com”/>

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

查閱了相關資料,知道DNS Prefetch也就是DNS預獲取,也是前段優化的一部分。在前段優化中關於DNS的有兩點:一是減少DNS的請求次數,第二個就是進行DNS預先獲取。

DNS Prefetch 已經被下面的瀏覽器支援

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

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

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

DNS Prefetch應該儘量的放在網頁的前面,推薦放在<meta charset=”/>後面。

PS:可以通過下面的標籤禁止隱式的DNS Prefetch。
<meta http-equiv=”x-dns-prefetch-control” content=”off”>