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 表仅在浏览器中加载

参见