DNS预解析

33 阅读2分钟

背景,最近线上有个页面被反馈慢,于是添加了DNS预解析

什么是DNS?

域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址,如下图所示。也就是说,当用户第一次访问某个网站的时候,会先去DNS查询这个网站的IP地址(后面继续访问的话会缓存)。

image.png

什么是DNS预解析?

有时候花在域名解析的时间会非常的长,在实际的测试过程中,甚至有超过3s的。DNS prefetch,是一种DNS预解析技术,当浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在单击当前网页中的连接时就无需进行DNS的解析,减少用户等待时间,提高用户体验。

从域名到查询IP的过程,这个过程其实一般都很快的,但也会引起延迟。一般浏览器会适当的对解析结果缓存,并对页面中出现的新域名进行预解析,但并不是所有的浏览器都会这么做,为了帮助其它浏览器对某些域名进行预解析,可以在页面的html标签中添加dns-prefetch告诉浏览器对指定域名预解析。

如何实现DNS prefetch?

实现DNS prefetch,非常简单。 (1)打开浏览器端对域名进行预解析预目前主流浏览器都是支持这个功能的,如Chrome/Firefox。如果要控制浏览器端是否对域名进行预解析,可以通过Http header 的x-dns-prefetch-control 属性进行控制。

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

如果要浏览器端对特定的域名进行解析,可以再页面中添加link标签实现。例如:

<link rel="dns-prefetch" href="www.test.com" />

参考链接

  1. cloud.tencent.com/developer/a…