【前端優化】dns-prefetch


誕生背景:

  1、DNS:domain name system,域名系統,瀏覽器請求第三方服務器資源時,必須要將該域名解析為ip地址,瀏覽器才能發出請求,這個過着叫DNS。DNS實現了域名到ip的映射

  2、DNS請求雖然占用了很少的帶寬,但會有很高的延遲,尤其在移動端會更加明顯。

  DNS緩存可以幫助減少此延遲,而DNS解析會導致請求增加明顯的延遲。對於打開了與許多第三方連接的網站,此延遲會降低加載性能,例如:淘寶、京東

  3、火狐瀏覽器上使用dns-prefetch,它是與頁面加載並行處理的,不會影響到頁面加載的性能

 

什么是dns-prefetch:

  DNS預解析,嘗試在請求資源之前解析域名。可能是后面要加載的文件,也可能是用戶將要打開的鏈接

  dns-prefetch可以幫助開發人員掩蓋DNS解析延遲

  HTML屬性,容錯性非常好。不支持的瀏覽器遇到dns-prefetch提示,網站不會被中斷

 

如何設置dns-prefetch:

  如果需要瀏覽器對特定的域名進行解析,可以在頁面中添加link標簽實現,例如:

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

 

注意事項:

  1、dns-prefetch僅僅對跨域域上的DNS查找有效,因此避免使用dns-prefetch指向自己的站點或域。因為當瀏覽器執行到這行時,你設置的站點或域背后的ip已經被解析了,寫了也是白寫

  2、如果該站點是通過https服務的,則此過程包括DNS解析,建立TCP連接以及執行TLS握手。可以將dns-prefetch與preconnect一起使用,dns-prefetch僅執行DNS預解析,preconnect會建立與服務器的連接,將二者結合起來可以進一步減少跨域請求的延遲

    <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
    <link rel="dns-prefetch" href="https://fonts.gstatic.com/">

    tip:如果頁面需要建立許多與第三方的連接,將它們預先連接會適得其反。preconnect最好僅使用在最關鍵的那個連接上,其他的連接只需使用dns-prefetch即可節省DNS查找的時間

  3、dns-prefetch有個默認加載條件,網頁中使用a標簽href屬性帶的域名,不需要在head標簽中加link手動設置的。但是a標簽的默認啟動在https不起作用,這時需要使用meta里面http-equiv來強制啟動功能

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

 

典型案例:

  1、淘寶

    

  2、京東

    

 


免責聲明!

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



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