加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

dns-prefetch是什么 前端优化:DNS预解析提升页面速度

发布时间:2020-11-28 22:02:09 所属栏目:编程 来源:网络整理
导读:在网页体验中我们常会碰着这种环境,即在挪用百度同盟、谷歌同盟以及当前网页地址域名外的域名文件时会碰着哀求延时很是严峻的环境。那么有没有要领去办理这种请
副问题[/!--empirenews.page--]

DNS 实现域名到IP的映射。通过域名会见站点,每次哀求都要做DNS理会。今朝每次DNS理会,凡是在200ms以下。针对DNS理会耗时题目,一些赏识器通过DNS Prefetch 来进步会见的流通性。
DNS Prefetch 是一种DNS 预理会技能,当赏识网页时,赏识器会在加载网页时对网页中的域名举办理会缓存,这样在单击当前网页中的毗连时就无需举办DNS的理会,减罕用户守候时刻,进步用户体验。

今朝支持 DNS Prefetch 的赏识器有 google chrome 和 firefox 3.5
假如要赏识器端对特定的域名举办理会,可以再页面中添加link标签实现。譬喻:
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/img.jb51.net" />
假如要节制赏识器端是否对域名举办预理会,可以通过Http header 的x-dns-prefetch-control 属性举办节制。
痛惜今朝支持上面标签的只有 google chrome 和 firefox3.5

一样平常来嗣魅这种延时的缘故起因不会是对方网站带宽可能负载的缘故起因,那么到底是什么导致了这种环境呢。湛蓝试着举办展望,假设是DNS的题目,由于DNS理会速率很也许是造成资源延时的最大缘故起因。于是湛蓝在页面header中添加了以下代码(用以DNS预理会):

<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/bdimg.share.baidu.com" />
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/nsclick.baidu.com" />
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/hm.baidu.com" />
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/eiv.baidu.com" />
<link rel="dns-prefetch" href=http://www.jb51.net/web/"http:/img.jb51.net" />

结果很不错(测试赏识器为IE8),再打开其他页面时百度分享按钮的加载明明进步!

当赏识器哀求一个URL的时辰,通过firebug我们可以发明或许有以下几个进程:否决、域名理会、成立毗连、发送哀求、守候相应、吸取数据。后头四个跟用户的收集环境和你的处事器处理赏罚速率有关,本文重点说说前两个。

1、否决:办理方案——进步赏识器并发毗连数

  否决:差异的赏识器对单个域名的最大并发毗连数有必然的限定,HTTP/1.0和HTTP/1.1也不沟通。好比HTTP/1.1协议下,IE6的并发毗连数限定是2个;而在HTTP/1.0下,IE6的并发毗连数可以到达4个。在其余赏识器也有相同的限定,一样平常是4~8个。这个时辰,假如赏识器同时对某一域名提倡多个哀求,高出了限定就会呈现守候,也就是否决。

  那么为了办理否决这一题目,我们可以对某些URL的域名分手处理赏罚,好比我们的图片域名,一样平常用相同img.guoweiwei.com的域名,当一个页面包括20多张图片的时辰,那至少有10几个哀求会被否决,而假如我们分手到img0.guoweiwei.com/img1.guoweiwei.com/img2.guoweiwei.com/…等差异域名的时辰,至少这20个图片哀求会并发举办,网站打开速率会明明晋升许多。相同的,可以对一些css/js的域名同样处理赏罚。

2、域名理会:办理方案——DNS预理会

  域名理会:从域名查询IP的进程,这个进程一样平常都很快的,但也会引起耽误。一样平常赏识器会恰当的对理会功效缓存,并对页面中呈现的新域名举办预理会,但并不是全部的赏识器城市这么做,为了辅佐其余赏识器对某些域名举办预理会,你可以在页面的html标签中添加dns-prefetch汇报赏识器对指定域名预理会,如下:

<link rel="dns-prefetch" href=http://www.jb51.net/web/"/domain.com">

  假如仔细一点,你会在淘宝的网站发明这两个征象,淘宝有许多相同img0.tbcdn.cn这样的域名。

  再其它提一点优化,

3、cookie断绝

  那就是为什么用img0.tbcdn.cn这个域名,而不是img0.taobao.com呢?这个得从cookie提及,淘宝的cookie已经很是大了,听说曾靠近1K,假如用后头的域名,那每次哀求图片城市带上长长的cookie,效果可想而知,不只使得收集哀求变慢,并且还挥霍了带宽,而淘宝图片处事器并不必要这些cookie。这就是所说的cookie污染,为了办理这一题目,单独的域名是很有须要的。

下面重点先容下:

4、DNS预理会办理方案

  DNS预理会是赏识器试图在用户会见链接之前理会域名,这是计较机的正常DNS理会机制。

  域名理会后,假如用户确实会见该域名,那么DNS理会时刻将不会有耽误。

  最明明的例子,DNS预理会在某个页面中包括很是多的域名很是有用,如搜刮功效页。碰着网页中的超链接,DNS prefetching从中提取域名并将其理会为IP地点,这些事变在用户赏识网页时,行使起码的CPU和收集在靠山举办理会。当用户点击这些已经预理会的域名,可以均匀镌汰200毫秒耗时(假设用户最近还未会见过该域名),更重要的是用户不会碰着DNS理会最坏的环境(每每高出1秒)。

  DNS Prefetch,即DNS预获取,是前端优化的一部门。一样平常来说,在前端优化中与 DNS 有关的有两点:

  一个是镌汰DNS的哀求次数,

  另一个就是举办DNS预获取 。

  DNS 作为互联网的基本协议,其理会的速率好像很轻易被网站优化职员忽视。此刻大大都新赏识器已经针对DNS理会举办了优化,典范的一次DNS理会必要淹灭 20-120 毫秒,镌汰DNS理会时刻和次数是个很好的优化方法。

  DNS Prefetching 是让具有此属性的域名不必要用户点击链接就在靠山理会,而域名理会和内容载入是串行的收集操纵,以是这个方法能 减罕用户的守候时刻,晋升用户体验 。

  赏识器对网站第一次的域名DNS理会查找流程依次为:赏识器缓存——体系缓存——路由器缓存——ISP DNS缓存——递归搜刮



默认环境下赏识器会对页面中和当前域名(正在赏识网页的域名)不在统一个域的域名举办预获取,而且缓存功效,这就是隐式的 DNS Prefetch。假如想对页面中没有呈现的域举办预获取,那么就要行使表现的 DNS Prefetch 了。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读