DNS预读取 dns-prefetch 提高页面载入速度

DNS Prefetch,即DNS预获取,是前端优化的一部分。通常来讲,在前端优化中与 DNS 有关的有两点: 一个是减小DNS的请求次数,另外一个就是进行DNS预获取前端

DNS 做为互联网的基础协议,其解析的速度彷佛很容易被网站优化人员忽视。如今大多数新浏览器已经针对DNS解析进行了优化,典型的一次DNS解析须要耗费 20-120 毫秒,减小DNS解析时间和次数是个很好的优化方式。DNS Prefetching 是让具备此属性的域名不须要用户点击连接就在后台解析,而域名解析和内容载入是串行的网络操做,因此这个方式能 减小用户的等待时间,提高用户体验api

默认状况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,而且缓存结果,这就是隐式的 DNS Prefetch。若是想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 了。浏览器

目前大多数浏览器已经支持此属性,支持版本以下:缓存

  • – Safari: 5+
  • – Chrome: All
  • – Firefox: 3.5+
  • – Opera: Unknown
  • – IE: 9+ (called “Pre-resolution” on blogs.msdn.com)

其中 Chrome 和 Firefox 3.5+ 内置了 DNS Prefetching 技术并对DNS预解析作了相应优化设置。因此 即便不设置此属性,Chrome 和 Firefox 3.5+ 也能自动在后台进行预解析 。网络

目前不少大型站点也应用了这一优化,例如:前端优化

淘宝:fetch

支付宝:优化

网易:网站

DNS Prefetch 应该尽可能的放在网页的前面,推荐放在 <meta charset="UTF-8"> 后面。具体使用方法以下:ui

<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//www.zhix.net">
<link rel="dns-prefetch" href="//api.share.zhix.net">
<link rel="dns-prefetch" href="//bdimg.share.zhix.net">

须要注意的是,虽然使用 DNS Prefetch 可以加快页面的解析速度,可是也不能滥用,由于有开发者指出 禁用DNS 预读取能节省每个月100亿的DNS查询 。

若是须要禁止隐式的 DNS Prefetch,可使用如下的标签:

<meta http-equiv="x-dns-prefetch-control" content="off">
相关文章
相关标签/搜索