DNS Prefetch麦乞,即DNS預(yù)獲取茁帽,是前端優(yōu)化的一部分。一般來(lái)說(shuō)因惭,在前端優(yōu)化中與 DNS 有關(guān)的有兩點(diǎn): 一個(gè)是減少DNS的請(qǐng)求次數(shù)岳锁,另一個(gè)就是進(jìn)行DNS預(yù)獲取 。
DNS 作為互聯(lián)網(wǎng)的基礎(chǔ)協(xié)議蹦魔,其解析的速度似乎很容易被網(wǎng)站優(yōu)化人員忽視〖ぢ剩現(xiàn)在大多數(shù)新瀏覽器已經(jīng)針對(duì)DNS解析進(jìn)行了優(yōu)化,典型的一次DNS解析需要耗費(fèi) 20-120 毫秒勿决,減少DNS解析時(shí)間和次數(shù)是個(gè)很好的優(yōu)化方式乒躺。DNS Prefetching 是讓具有此屬性的域名不需要用戶(hù)點(diǎn)擊鏈接就在后臺(tái)解析,而域名解析和內(nèi)容載入是串行的網(wǎng)絡(luò)操作低缩,所以這個(gè)方式能 減少用戶(hù)的等待時(shí)間嘉冒,提升用戶(hù)體驗(yàn) 。
默認(rèn)情況下瀏覽器會(huì)對(duì)頁(yè)面中和當(dāng)前域名(正在瀏覽網(wǎng)頁(yè)的域名)不在同一個(gè)域的域名進(jìn)行預(yù)獲取表制,并且緩存結(jié)果健爬,這就是隱式的 DNS Prefetch。如果想對(duì)頁(yè)面中沒(méi)有出現(xiàn)的域進(jìn)行預(yù)獲取么介,那么就要使用顯示的 DNS Prefetch 了娜遵。
目前大多數(shù)瀏覽器已經(jīng)支持此屬性,支持版本如下:
– Safari: 5+
– Chrome: All
– Firefox: 3.5+
– Opera: Unknown
– IE: 9+ (called “Pre-resolution” on blogs.msdn.com)
其中 Chrome 和 Firefox 3.5+ 內(nèi)置了 DNS Prefetching 技術(shù)并對(duì)DNS預(yù)解析做了相應(yīng)優(yōu)化設(shè)置壤短。所以 即使不設(shè)置此屬性设拟,Chrome 和 Firefox 3.5+ 也能自動(dòng)在后臺(tái)進(jìn)行預(yù)解析 。
目前很多大型站點(diǎn)也應(yīng)用了這一優(yōu)化久脯。例如淘寶纳胧、支付寶等
DNS Prefetch 應(yīng)該盡量的放在網(wǎng)頁(yè)的前面,推薦放在 <meta charset="UTF-8"> 后面帘撰。具體使用方法如下:
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" >
<link rel="dns-prefetch" >
<link rel="dns-prefetch" >
需要注意的是跑慕,雖然使用 DNS Prefetch 能夠加快頁(yè)面的解析速度,但是也不能濫用摧找,因?yàn)橛虚_(kāi)發(fā)者指出 禁用DNS 預(yù)讀取能節(jié)省每月100億的DNS查詢(xún) 核行。
如果需要禁止隱式的 DNS Prefetch,可以使用以下的標(biāo)簽:
<meta http-equiv="x-dns-prefetch-control" content="off">