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" />

强制预解析主机名可能很有用,例如,在网站主页上强制预解析在整个网站中频繁引用但在主页本身不使用的域名。这将改善网站的整体性能,即使主页的性能可能不受影响。

规范

不属于任何当前规范。

浏览器兼容性

另见