减少域名DNS解析时间将网页加载速度提升新层次-DNS缓存/预读取/拆分域名

DNS CDN   2023年10月09日 12:35  

减少域名DNS解析时间将网页加载速度提升新层次-DNS缓存/预读取/拆分域名

提高网页的打开速度,一般地我们会选择使用CDN,利用“就近原则”让用户在最短的时间内获取到服务器资源,实际应用当中采用CDN的方式提高网站访问速度的效果也是最明显的。这也就是为什么国外的空间打开速度远不及国内的主机的访问速度的原因了。

我们知道在用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意。性能稳定、响应时间快的DNS域名解析服务与不稳定、响应过慢的DNS的域名解析时间可能相差1秒,而对于网站存在过多的域名解析请求,这个时间积累起来就非常地多了。

本篇文章就来分享一下通过优化网站DNS域名解析,减少域名DNS解析时间,从而让网站在原来的访问速度的前提下继续实现新的飞跃。想要了解更多的有关于网站和服务器优化加速的方法,可以试试:

减少域名DNS解析时间将网页加载速度提升到新层次-/预加载/多域名

一、域名DNS解析原理和过程

1、DNS是怎么来的?DNS 是域名系统 (Domain Name System) 的缩写。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

2、DNS解析的基本过程一:查找本地域名DNS缓存。当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址,例如计算机系统Hosts文件域名对应IP、路由器缓存、ISP(互联网服务提供商)DNS缓存。

域名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、查找到正确的域名对应IP地址后,本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。于是你的浏览器就正常访问网站了。下图是对Google.com为例,解释用户在访问谷歌时DNS解析的全过程。(点击放大)

域名DNS解析全过程

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

1、从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请求头信息通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理。

域名解析的时间

2、览器加载显示html的顺序是:从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。如果遇到语义解释性的标签嵌入文件(JS脚本,CSS 下载过程会启用单独连接进行下载,并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。(点击放大)

浏览器加载网页的时间线

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

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

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

合理利用DNS TTL值

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

提高域名DNS服务器缓存时间

3、适当地增大TTL值可以让DNS Server缓存该域名更长时间,增加缓存的命中率。TTL一般默认为一小时,可以根据实际情况设为一天甚至一周以上。当然,如果你域名的IP经常变化,则TTL不应过大,否则各地的DNS Server会暂时无法获得新的正确的IP地址。

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

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

使用DNS预读取加快网页打开速度

2、控制浏览器的DNS预读取就是DNS-prefetch标签了,DNS Prefetch应该尽量的放在网页的前面,格式类似是:<link rel=”dns-prefetch” href=”https://cb.baidu.com”/>,很多网站都使用使用百度广告联盟代码,使用这个就可以预读取DNS了。

3、默认情况下浏览器会有隐式的DNS Prefetch,即会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,我们可以通过下面的标签禁止隐式的DNS Prefetch:<meta http-equiv=”x-dns-prefetch-control” content=”off”>

4、需要注意的就是,DNS Prefetch只需要在用户在第一次打开网站时使用即可,没有必要每个页面都使用DNS Prefetch,否则就是重复DNS读取了,反而还无形中增加了DNS查询的次数,效果适得其反。

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

1、一般来说网页的内容加载时会发生多个域名请求服务,如果你的网站JS、CSS、图片等非常多的话,建议将这些文件分别放在不同的域名上,这样浏览器在打开某一个页面时就可以同时向这些域名发送DNS解析请求了,能在一定程度上减少DNS时间。(点击放大)

DNS域名解析拆分为多个域名

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

减少网页的DNS请求次数

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

六、加快域名DNS解析速度方法小结

1、本文介绍的用DNS缓存、DNS预读取、拆分域名来减少域名DNS解析的时间的方法,对于一般的网站的加速效果可能并不明显,但是对于一些每天DNS请求达到上百万级以上的网站,DNS加速的效果就显而易见了。另外,如果发现自己的网站响应速度过慢,不妨好好检查一下网页的DNS用时。

2、除了从网站本身的DNS解析来加快访问速度外,我们平常在选择DNS服务时尽量使用那些稳定可靠的DNS服务,这样的DNS服务响应速度和缓存率都是非常不错的。假如自己的网站分拆了多个二级域名,不妨好好用用CNAME,设置好TTL时间,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到。

文章出自:免费资源部落 / 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有38 位神马家族成员冒出泡来在农场开始干活了
  • Blogcloud 4

    …好复杂

    这是农场的第 1 块农田,部落批准 [Blogcloud] 在[2015-3-15 17:59]开垦完成.
  • Blogcloud 4

    ??好象是沙发??

    这是农场的第 2 块农田,部落批准 [Blogcloud] 在[2015-3-15 18:00]开垦完成.
  • Blogcloud 4

    独占三层楼

    这是农场的第 3 块农田,部落批准 [Blogcloud] 在[2015-3-15 18:00]开垦完成.
  • Kung 23

    独占三层的请务必封号…(雾

    这是农场的第 4 块农田,部落批准 [Kung] 在[2015-3-15 18:08]开垦完成.
  • Adrift 3

    恩恩,内容不错,来占个座

    这是农场的第 5 块农田,部落批准 [Adrift] 在[2015-3-15 18:51]开垦完成.
  • ytf4425 15

    我见过dns解析一分多钟的(不只是dns服务器问题还是他的配置问题)

    qi 回复:

    @ytf4425, 服务器连接时间有时也会导致很慢。

    这是农场的第 6 块农田,部落批准 [ytf4425] 在[2015-3-15 19:17]开垦完成.
  • 低版本浏览器也支持吗?

    qi 回复:

    @何朝城, 这个就是对付旧版本的浏览器,新版本的浏览器在DNS解析方便会有优势。

    这是农场的第 7 块农田,部落批准 [何朝城] 在[2015-3-15 19:18]开垦完成.
  • 泷涯 5

    域名太多不好。为什么有的网站会分多个域名,主要有以下原因:

    1.像淘宝,单独使用一个taobaocdn.com,是为了减少Cookie传递,在一定程度上加快速度,也更加安全

    2.单独一个子域名放静态文件,是为了分开静态与动态,因为静态文件是不需要特别处理的

    3.有的网站(比如GitHub的头像)会分2-3个域名,这是因为浏览器一般会同时加载2-4个不同域名的东西

    综上,并非域名越多越好。在静态文件非常多时,分2-4个域名是最好的选择。如果并不是非常多,只单独分一个域名给静态文件最为合适

    qi 回复:

    @泷涯, 有道理,下次测试对比一下看看。

    这是农场的第 8 块农田,部落批准 [泷涯] 在[2015-3-15 20:27]开垦完成.
  • wordpressnote 13

    小站,先不用了,我的速度是不是很快呢?

    ZMT 回复:

    @wordpressnote, 速度不错

    喵 回复:

    @wordpressnote, 瞬间打开了….怎么办到的….

    qi 回复:

    @wordpressnote, 非常快。

    WKun 回复:

    @wordpressnote, 之前用了那个WP生成全站静态页面插件,再加上七牛和加速乐CDN,简直就像浏览脱机网页。追求速度不妨试试,不过评论和搜索得用第三方了,毕竟是静态网页。。

    这是农场的第 9 块农田,部落批准 [wordpressnote] 在[2015-3-15 20:29]开垦完成.
  • 不会用,小站也用不着

    Jason Huang 回复:

    @Jason Huang, 呵呵

    这是农场的第 10 块农田,部落批准 [Jason Huang] 在[2015-3-15 22:37]开垦完成.
  • 等待记忆中 2

    必须支持!!!

    这是农场的第 11 块农田,部落批准 [等待记忆中] 在[2015-3-16 15:08]开垦完成.
  • 耳屎网 6

    一般来说,解析时间很短的,不要选垃圾的服务商!
    主机性能、带宽、页面元素大小,这才是关键!

    qi 回复:

    @耳屎网, 不同的主机的服务质量确实有很大的区别。

    这是农场的第 12 块农田,部落批准 [耳屎网] 在[2015-3-16 17:22]开垦完成.
  • 极雪 15

    之前在v7v3看到有判断cookies来加dns预缓存的

    qi 回复:

    @极雪, 这个对第一次可能就不行了。

    极雪 回复:

    @qi, 不是,是用cookies判断是否是第一次访问,如果是第一次,就会加载dns预缓存代码

    qi 回复:

    @极雪, 那这个好。

    这是农场的第 13 块农田,部落批准 [极雪] 在[2015-3-16 17:54]开垦完成.
  • 总有刁民想害朕 9

    太技术了看不大懂,过来签到打卡

    这是农场的第 14 块农田,部落批准 [总有刁民想害朕] 在[2015-3-16 22:08]开垦完成.
  • 神父 20

    太深奥了,完全看不懂

    这是农场的第 15 块农田,部落批准 [神父] 在[2015-3-17 09:17]开垦完成.
  • 张小三资源网 17

    对于使用CDN或者有备用机器的人来说,域名的TLL要尽量的低。。一旦某个节点出现故障,而又不能快速的解析到备用机器上,那就gameover了、、

    WKun 回复:

    @张小三资源网, 是的,之前换了服务器取消了CDN,改了A记录,结果2天了,还是显示CDN提供商的内容。。

    这是农场的第 16 块农田,部落批准 [张小三资源网] 在[2015-3-18 21:47]开垦完成.
  • 很全面,看懂了。

    这是农场的第 17 块农田,部落批准 [灵尘子] 在[2015-3-20 11:28]开垦完成.
  • Blogcloud 4

    @qi, #广告服务器好像被q了,部落里所有广告都不显示了

    qi 回复:

    @Blogcloud, 我这边正常,你那边不行了?

    这是农场的第 18 块农田,部落批准 [Blogcloud] 在[2015-3-20 17:51]开垦完成.
  • 不认识 17

    路过,打酱油~

    这是农场的第 19 块农田,部落批准 [不认识] 在[2015-3-21 15:23]开垦完成.
  • 天幻 2

    顺带送了一个# IP么(斜眼笑

    qi 回复:

    @天幻, IP地址吗?

    天幻 回复:

    @qi, 是的。

    这是农场的第 20 块农田,部落批准 [天幻] 在[2015-8-22 14:02]开垦完成.
  • 博主写的文章一般都非常简明易懂,看到这篇文章没想到博主还是技术派

    qi 回复:

    @yearliny, 哈哈,谢谢支持。

    这是农场的第 21 块农田,部落批准 [yearliny] 在[2016-12-6 11:29]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部