X-DNS-Prefetch-Control

非標準: 此功能是非標準的,並且不在標準軌道上。不要在面向 Web 的生產站點上使用它:它不會對所有使用者起作用。實現之間也可能存在較大差異,並且行為在將來可能會發生變化。

X-DNS-Prefetch-Control HTTP 響應標頭控制 DNS 預取,這是一個功能,瀏覽器透過它主動對使用者可能選擇跟隨的連結以及文件引用的專案(包括影像、CSS、JavaScript 等)的 URL 執行域名解析。

此預取在後臺執行,因此在需要引用專案時,DNS 可能已經解析。這減少了使用者單擊連結時的延遲。

標頭型別 響應標頭
禁止的標頭名稱

語法

http
X-DNS-Prefetch-Control: on
X-DNS-Prefetch-Control: off

指令

啟用 DNS 預取。如果瀏覽器支援此功能,則在沒有此標頭時,瀏覽器會執行此操作。

停用 DNS 預取。如果您不控制頁面上的連結,或者知道您不想將資訊洩露到這些域,這很有用。

描述

DNS 請求在頻寬方面非常小,但延遲可能相當高,尤其是在行動網路上。透過推測性地預取 DNS 結果,可以在某些時候顯著減少延遲,例如,當用戶單擊連結時。在某些情況下,延遲可以減少一秒鐘。

一些瀏覽器中此預取的實現允許域名解析與實際頁面內容的獲取並行進行(而不是序列進行)。透過這樣做,高延遲的域名解析過程不會在獲取內容時造成任何延遲。

以這種方式可以顯著改善頁面載入時間,尤其是在行動網路上。如果可以在請求影像之前解析影像的域名,則載入大量影像的頁面可以在載入影像的時間內看到 5% 或更大的改進。

在瀏覽器中配置預取

一般來說,您無需執行任何操作來管理預取。但是,使用者可能希望停用預取。在 Firefox 上,這可以透過將 network.dns.disablePrefetch 偏好設定設為 true 來完成。

此外,預設情況下,不會對透過 HTTPS 載入的文件執行嵌入式連結主機名的預取。在 Firefox 上,這可以透過將 network.dns.disablePrefetchFromHTTPS 偏好設定設為 false 來更改。

示例

開啟和關閉預取

您可以在伺服器端或從各個文件中傳送 X-DNS-Prefetch-Control 標頭,使用 http-equiv 屬性在 <meta> 元素上,如下所示

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

您可以透過將 content 設定為 "on" 來反轉此設定。

強制查詢特定主機名

您可以透過在 rel 屬性上使用 <link> 元素,使用 連結型別dns-prefetch,來強制查詢特定主機名,而無需提供使用該主機名的特定錨點。

html
<link rel="dns-prefetch" href="https://www.mozilla.org" />

在此示例中,域名 www.mozilla.org 將被預先解析。

同樣,連結元素可用於解析主機名,而無需提供完整的 URL,但只能透過在主機名前面加上兩個斜槓來實現。

html
<link rel="dns-prefetch" href="//www.mozilla.org" />

例如,在站點的首頁上強制預取主機名可能很有用,以強制預先解析整個站點中頻繁引用的域名,即使它們本身不在首頁上使用。這將提高站點整體效能,即使首頁的效能可能不受影響。

瀏覽器相容性

BCD 表僅在瀏覽器中載入

參見