Obeta

Header中的X-DNS-Prefetch-Control

X-DNS-Prefetch-Control 头控制着浏览器的 DNS 预读取功能,能显著降低各个链接的请求延时.

DNS(Domain Name System)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS 使用 TCP 和 UDP 端口 53.当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符.

2008 年后 ICANN 通过一项决议,允许使用其它语言作为互联网顶级域名字符,因此后面诞生了很多XXX.我爱你,XXX.中国等域名

因此使用X-DNS-Prefetch-Control进行预缓存,可以显著降低请求时间,将 DNS 查询进行提前缓存下来了.

语法如下:

X-DNS-Prefetch-Control: on # 启用 DNS 预解析.
X-DNS-Prefetch-Control: off # 关闭 DNS 预解析

在浏览器支持 DNS 预解析的特性时即使不使用该 Header 浏览器依然会进行预解析.

DNS 请求需要的带宽非常小,但是延迟却有点高,这点在手机网络上特别明显.预读取 DNS 能让延迟明显减少一些,例如用户点击链接时.在某些情况下,延迟能减少一秒钟. 在某些浏览器中这个预读取的行为将会与页面实际内容并行发生(而不是串行).正因如此,某些高延迟的域名的解析过程才不会卡住资源的加载.这样可以极大的加速(尤其是移动网络环境下)页面的加载.在某些图片较多的页面中,在发起图片加载请求之前预先把域名解析好将会有至少 5% 的图片加载速度提升.

如果你控制不了服务器对 Header 的设置,可以通过html标签控制:

<!-- head中 -->
<meta http-equiv="x-dns-prefetch-control" content="on" />

<!-- 特定域名 -->
<link rel="dns-prefetch" href="https://www.google.com/" />

引用

个人随笔记录,内容不保证完全正确,若需要转载,请注明作者和出处.