背景
对提升网页性能,提高加载速度和用户体验的不断重视。
定义与优势
DNS Prefetch,即DNS预获取,是前端优化的一部分。当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连接时就无需进行 DNS 的解析,减少用户等待时间,提高用户体验。一般来说,在前端优化中与 DNS 有关的有两点:
- 减少DNS的请求次数
- 进行DNS预获取
现在大多数新浏览器已经针对DNS解析进行了优化,典型的一次DNS解析需要耗费20-120毫秒,减少DNS解析时间和次数是个很好的优化方式。DNS Prefetching 是让具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能 减少用户的等待时间,提升用户体验 。
默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的 DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 了。
实践
写法
DNS Prefetch 应该尽量的放在html文档的前面。具体使用方法如下:1
2
3
4
5<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="xxxxx">
<link rel="dns-prefetch" href="xxxxx">
<link rel="dns-prefetch" href="xxxxx">
... ...
在Chrome中进行观察
在Chrome浏览器地址栏输入”about:dns”可查看当前浏览器的预解析数据。
举例如下:
1.今日头条
2.Github
3.新浪微博
4.阿里云