前端優化DNS預解析

2022-06-08 12:09:11 字數 1441 閱讀 1089

寫在前面今天再看一同事寫的**,發現了這樣這個**,很好奇查了一下才知道,dns-prefetch鏈結關係型別用於指示將用於獲取所需資源的源,並且使用者**應該盡可能早地解析,可以提高網頁的載入速度。

背景

dns與網域名稱解析

dns全稱為domain name system,即網域名稱系統,是網域名稱和ip位址相互對映的乙個分布式資料庫。

網域名稱解析即通過主機名,最終得到該主機名對應的ip位址的過程。

瀏覽器對**第一次的網域名稱dns解析查詢流程依次為:

瀏覽器快取 - 系統快取 - 路由器快取 - isp dns快取 - 遞迴搜尋

解決方案

dns預解析是瀏覽器試圖在使用者訪問鏈結之前解析網域名稱,這是計算機的正常dns解析機制。

網域名稱解析後,如果使用者確實訪問該網域名稱,那麼dns解析時間將不會有延遲。

遇到網頁中的超連結,dns prefetching從中提取網域名稱並將其解析為ip位址,這些工作在使用者瀏覽網頁時,使用最少的cpu和網路在後台進行解析。

當使用者點選這些已經預解析的網域名稱,可以平均減少200毫秒耗時(假設使用者最近還未訪問過該網域名稱)。

dns prefetching簡介

dns請求需要的頻寬非常小,但是延遲卻有點高,這點在手機網路上特別明顯,而一次典型的dns解析一般需要20-200ms,所以dns預解析可以讓延遲明顯減少一些。

在某些瀏覽器中這個預讀取的行為將會與頁面實際內容並行發生(而不是序列)。正因如此,某些高延遲的網域名稱的解析過程才不會卡住資源的載入。

這樣可以極大的加速(尤其是流動網路環境下)頁面的載入。在某些較多的頁面中,在發起載入請求之前預先把網域名稱解析好將會有至少 5% 的載入速度提公升。

使用x-dns-prefetch-control頭控制著瀏覽器的dns預解析功能

x-dns_prefetch-control: on|off

on:啟用dns預解析。在瀏覽器支援dns預解析的特性時及時不適用該標籤瀏覽器依然會進行預解析。

off:關閉dns預解析。這個屬性在頁面上的鏈結並不是由你控制的或是你根本不想向這些網域名稱引導資料時非常有用。

瀏覽器支援

示例

// 開啟和關閉dns預讀取

"x-dns-prefetch-control" content="off">

// 強制查詢特定主機名

關於dns預解析

dns 實現網域名稱到ip的對映。通過網域名稱訪問站點,每次請求都要做dns解析。目前每次dns解析,通常在200ms以下。針對dns解析耗時問題,一些瀏覽器通過dns prefetch 來提高訪問的流暢性。什麼是 dns prefetch dns prefetch 是一種dns 預解析技術,當你瀏...

對於DNS預解析的理解

什麼是 dns prefetch dns 實現網域名稱到ip的對映。通過網域名稱訪問站點,每次請求都要做dns解析。目前每次dns解析,通常在200ms以下。針對dns解析耗時問題,一些瀏覽器通過dns prefetch 來提高訪問的流暢性。dns prefetch 是一種dns 預解析技術,當瀏覽...

DNS解析和前端優化點之一

dns伺服器 網域名稱解析伺服器,在伺服器上儲存著 網域名稱 伺服器外網ip 的對映 我們傳送請求時所謂的dns解析,其實就是根據網域名稱在dns伺服器上查詢對應主機的外網ip 瀏覽器快取 系統快取 就是電腦本地的,linux見 etc hosts 路由器快取 isp 運營商 dns快取 根網域名稱...