怎样减少DNS解析时间,从而提升网页加载速度

    作者:课课家教育更新于: 2016-08-05 09:07:01

      我们都知道,DNS在解析网页的时候需要一定的时候,如果时间很长将会影响网页的加载速度,那么该怎么去减少DNS解析时间,提升网页的加载速度呢?这是我们首先要考虑的问题,在此过程中我们还是需要掌握一定的解析过程知识,才会更懂得去设置!接下来我们来看看基本的工作原理是怎么样的,有兴趣的朋友们可以看看学习!本文将和大家来分享一下通过优化网站DNS域名解析,减少域名DNS解析时间,从而让网站在原来的访问速度的前提下实现速度的提升!

      如果是要提高网页的打开速度,我们一般的选择是使用CDN,利用“就近原则”可以让用户在段时间里面取到服务器资源,我们在实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的。这就知道为啥国外的空间打开速度远不及国内的主机的访问速度的具体原因了

      用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意。性能稳定、响应时间快的DNS域名解析服务与不稳定、响应过慢的DNS的域名解析时间或者只是相差那么1秒的时候,而对于网站存在过多的域名解析请求的时候,这样的速度将会受到一定的影响!

      一、域名DNS解析原理和过程是怎样的?

      1、首先要为大家来说一下DNS是怎么来的?DNS是域名系统(DomainNameSystem)的缩写。在因特网上的域名与IP地址之间是一对一或者是多对一的一种关系,域名可以让人很好的去记忆,但机器只是认识IP地址,因此它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,那么DNS就是进行域名解析的服务器,相信这样的解析你就可以明白域名解析是什么了。

    怎样减少DNS解析时间,从而提升网页加载速度_dns解析_dns服务器_dns域名_课课家

      2、DNS解析的过程一:查找本地域名DNS缓存。当你通过浏览器访问某个某域名时,浏览器将会在缓存中查找是否有该域名对应的IP地址,比如计算机系统Hosts文件域名对应IP、路由器缓存、ISP中的DNS缓存。

      3、DNS解析的过程二:如果是通过上面的DNS查询还是没有找到你的域名对应的IP地址,那么接下来就要进入根服务器进行查询。全球共有13台根逻辑域名服务器。这13台逻辑根域名服务器中名字分别为“A”至“M”,真实的根服务器在2014年1月25日的数据为386台,并且是分布在世界各地!

      4、虽然在根域名服务器中没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息。根域名服务器会将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器,这样你的域名查询请求会进入到相应的顶级域名服务器。

      5、DNS解析的过程三:当顶级域名服务器收到请求后查看区域文件记录,如果是没有的话,那么则将其管辖范围内主域名(不带任何前缀的域名,如freehao123.com)服务器的IP地址告诉本地DNS服务器。如果还是没有找到,则进入到下一级域名服务器进行查找。这样重复的去执行操作,直到找到对应的地址为为止!这就是一个基本的查找过程。

      6、当DNS查找到正确的域名对应IP地址后,本地域名服务器把返回的结果保存到缓存,以准备进行下一次的使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。这样你的浏览器就正常访问网站了。下图是以访问Google.com为例,解释用户在访问谷歌时DNS解析的全过程。

    dns解析的全程

      二、浏览器加载网页的基本过程

      1、当你从输入网址开始,浏览器通过DNS解析查到域名映射的IP地址,如果是请求成功的话浏览器端向此IP地址取得连接,在成功取得连接之后,浏览器端将请求头信息通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后将会等待处理!我们看到下图中的一个解析数据分析

    浏览器加载网页的过程

      2、浏览器它加载显示html的顺序是:从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。当浏览器遇到语义解释性的标签嵌入文件(JS脚本,或者CSS下载过程将会启用单独的链接进行一个下载,并且在下载后进行解析,在解析过程中,将会停止页面的元素的下载。

    浏览器加载网页

      3、那么是什么原因会导致网页加载过慢?浏览器在下载CSS资源的同时,并行解析HTML文件,但是,一旦发现有脚本文件的引用,则必须等待脚本文件完成下载并且执行后才能继续解析。内容下载时间主要取决于用户带宽、服务器带宽、文件大小、文件数量等。

      三、合理利用DNSTTL值增加域名的缓存命中率

      1、当DNS服务器采用递归或迭代来处理客户端查询的时候,它们将发现并获得大量有关DNS命名空间的重要信息。然后这些信息由服务器缓存。缓存为DNS解析流行名称的后续查询将提供加载快速的功能,同时这样也大大减少了网络上与DNS相关的查询通信量。

    域名请求需要的时间

      2、TTL(Time-To-Live)意思是一条域名解析记录在DNS服务器上缓存时间。当信息缓存时,生存时间(TTL)值适用于所有缓存的RR。只要是缓存RR的TTL没有到期,那么DNS服务器就可继续缓存并再次使用RR来应答与这些RR相匹配的客户端提出的查询。

    thl

      3、我们也是可以适当的去增大TTL值可以让DNSServer缓存该域名获得更多的时间,增加缓存的命中率。TTL一般默认为一小时,我们是可以根据实际需求来设为一天甚至一周以上。当然如果你域名的IP经常变化,则设置TTL不应过大,否则各地的DNSServer会暂时无法获得新的正确的IP地址,这一点是我们需要注意的。

      四、合理使用DNS-prefetch来让DNS预读取

      1、从浏览器加载网页的过程可以看出,输入网址来加载网页的请求是可以多任务同时进行的,对于网页有多个DNS请求的情况,你是可以让浏览器在后台先把要使用的DNS请求默默地完成,从新打开网页的时候,这样就可以节省DNS查询的时间了!

    dns prefetch

      2、控制浏览器的DNS预读取就是DNS-prefetch标签了,DNSPrefetch应该尽量的放在网页的前面。

      3、一般情况下浏览器会有隐式的DNSPrefetch,意思就是说会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,我们可以通过标签禁止隐式的DNSPrefetch:

      4、我们需要注意的是DNSPrefetch只需要在用户在第一次打开网站时就可以使用的,不用每次打开都使用DNSPrefetch,这样将会重复的进行DNS读取了,反而还无形中增加了DNS查询的次数,增加了查询的时间!

      五、DNS域名解析拆分为多个域名增加并行下载量

      1、当网页的内容加载时会发生多个域名请求服务,如果你的网站里的JS、CSS、图片等非常多的话,建议将这些文件分别放在不同的域名上,因为这样可以使浏览器打开页面的时候同时向这些域名发送DNS解析请求了,能够减少DNS时间.

    加载耗时

      2、如果说你的网页的内容越多,分析的域名应该尽量多一些。例如html、htm,js、css,jpg、png、gif,php、asp都可以放在不同的域名上。那么在一些实际的应用中使用全站CDN或者是静态文件CDN就可以实现上述效果,并且是可以结合csssprite一起来使用的。

      3、而csssprite的作用是相反的,它不是增加域名请求,而是将减少域名的DNS请求,这也主要是用在图片上。它允许你将一个页面涉及到的所有的杂碎的图片都包含到一张大图中去,这样当你去访问该页面时,载入的图片就不会像以前那样缓慢的显示出来了!

      结语:减少dns解析的时间可以按照上面所提及到的办法来进行一个设置,但是按照本文所罗列出来的dns缓存、dns预读取,可能得到的结果并不是特别的明显,但是对于一个要请求DNS百万以上的网站来说,这样就可以减少很多时间了。同时我们在日产的使用稳定的dns服务也是dns影响速度不错的选择!

课课家教育

未登录