X-DNS-Prefetch-Control 頭

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

HTTP X-DNS-Prefetch-Control 響應頭用於控制 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" 來反轉此設定。

強制查詢特定主機名

您可以使用 <link> 元素的 rel 屬性,並將 連結型別設定為 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" />

強制預解析主機名可能很有用,例如,在網站主頁上強制預解析在整個網站中頻繁引用但在主頁本身不使用的域名。這將改善網站的整體效能,即使主頁的效能可能不受影響。

規範

不屬於任何當前規範。

瀏覽器相容性

另見