减少域名dns解析时间 域名解析中的TTL值设置多少合适

发布时间: 访问量:68
目录
  • 域名解析中的TTL值设置多少合适?
    • 一、什么是TTL值?
    • 二、TTL值对域名解析的影响
    • 三、如何设置合理的TTL值?
  • DNS解析,变快有意义吗?
    • 如何优化呢?
      • 什么叫拆分域名?
        • 拆分域名有什么好处?
          • 按照什么原则拆分域名呢?
            • 个数多少合适?
            • 什么内容放到同个域名下?

          什么是TTLTTL是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

          其他不再赘述,发挥二的性格,我们直奔主题。

          用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DNS client,寻找到用户配置或者自动分配的DNS IP,之后就开始整个解析过程。

          域名解析中的TTL值设置多少合适?

          域名解析是实现域名指向IP的重要机制,而TTL值的设置对于域名解析记录结果的准确性和安全性意义明显。那么在域名解析操作中,TTL值设置多少合适呢?接下来,国科云针对这个问题做下简单介绍。

          一、什么是TTL值?

          TTL的全称是“Time To Live(生存时间)”,表示的是DNS记录在DNS服务器上的缓存时间。TTL值与域名解析中DNS缓存机制有着直接关系。

          标准的域名解析过程是客户端发起解析请求,首先请求递归服务器,递归服务器代替客户端向根服务器、顶级服务器和权威服务器发起请求,这个环节要经过全球多级查询,如果每一次请求都按照这个流程操作,就会产生很大的延迟。

          为了节省解析时间,提升解析效率,递归服务器会将首次在权威服务器请求到的解析记录缓存到自身中,保存一段时间。在这段时间内如果有访客再次对同一域名发起请求,递归服务器就会直接将DNS缓存中的结果告知客户端,而不必每次都进行全球DNS查询。这个时间就是TTL值。

          二、TTL值对域名解析的影响

          TTL值的大小对于域名解析的影响是十分明显的。如果TTL值太大,那么DNS缓存时间存在就很长,虽然可以在较长时间内为访客提供更快速的解析记录,然而一旦域名解析记录发生变更,DNS缓存并不能同步更新数据,就会导致在很长一段时间内,DNS缓存返回给客户端的记录是错误的原记录,从而使得用户访问到错误的站点,而攻击者也可以利用长期存在的DNS缓存发起DNS劫持攻击。

          反之,如果TTL值越小,DNS缓存存活的时间就越短,递归服务器就会频繁对权威服务器发起请求,这样就保证了递归服务器可以较快速地更新最新的解析记录,从而保证解析记录的真实可靠,但这样的问题是TTL值太小,就失去了DNS缓存的存在意义,DNS解析又恢复成从根服务器到权威服务器的标准请求流程,解析时间提升,且频繁请求也对权威服务器造成较大的压力。

          三、如何设置合理的TTL值?

          不同的解析服务商在设置域名解析时的默认TTL值不太一样,大部分都是600秒,如果没有特殊的需求,TTL值采用默认值即可。

          如果网站服务器比较稳定,很长时间都不会更换,这种情况下就可以把TTL值设置得更大些,可以让访客更快得到结果去访问。

          如果网站对解析安全性和准确性要求较高,则可以将TTL值设置得尽量小些,这样就可以更及时地同步权威解析数据。

          还有一种情况就是当域名DNS服务器发生变更时,可以提前24小时将TTL值调小,修改域名解析记录24小时之后,在保证解析记录全球生效后,再将TTL值按照自己的需求进行调整。

          DNS解析,变快有意义吗?

          有,呵呵,很多小型网站,DNS解析时间都接近0.5s,甚至我见过一个网站,需要1.2s才可以解析出结果的。这是个非常令人吃惊的数据,因为对于一般网站打开时间超过8s用户即将放弃访问,而对于电子商务网站,4s就是用户忍耐极限。而一般经过优化的小型网站,DNS解析时间都可以控制在200MS左右,而带宽在100M左右的网站,经过优化,DNS解析时间可以控制在50-100ms。

          如何优化呢?

          首先利用好TTL,因为要尽量多的让用户直接从运营商的DNS缓存中拿到A记录,这样才能保证最快,但是也要保证,当你的服务器出问题时,需要尽快的切换,所以,这个TTL设置也是有一些情况需要综合研究的。

          1、 你肯定清楚,自己的服务器有没有多台或者备份。如无备份,那服务器宕机时,你只能生抗,所以,TTL时间对于你来说是越长越好,因为TTL短的目的是服务器发生问题时,可以及时切换,这个对于没有备份的网站基本利用不上。所以,你的TTL设置就是越长越好,当然了,也不能无限长,一般设置TTL 3600即可。

          2、 如有备份或者多台服务器,会发生由于服务器宕机需要及时做切换,TTL时间越短,切换越及时,但是TTL时间越短,也就意味着运营商DNS经常缓存不住,一般用户,设置为TTL 600即可,如果对及时切换,要求特别苛刻的网站,设置TTL 120即可。

          其次寻找足够热的域名解析商。很多网站,都是自己做一个域名解析服务器,看着自己掌控方便了,但是大错特错,因为你的域名解析服务器,基本上都不被缓存,每次从根服务器询问一圈,绕了大半个地球,才给出最后的结果,那自然会效果很差。所以,要寻找足够热的域名解析商。什么叫热,就是被访问的次数特别多。足够热的话,域名解析服务器的A记录基本上会被各地运营商的DNS一直缓存着。如何判断域名解析商够不够热呢?其实,也很简单,看看这个域名解析商的客户够不够多,他们客户网站够不够热门,访问的人够不够多。

          也给大家推荐一个更好的方法,就是找CDN厂商做域名解析。因为CDN厂商服务的客户,有很多是很热很大用户群很多的,所以,这些CDN厂商的域名解析服务器,服务效果那是岗岗的好。

          最后是进阶技巧---巧用CNAME。不少网站拥有者,在同样的一个或多个服务器上运营很多小网站;或者自己运营一个网站,但是拆分了很多个二级域名。针对这些情况,严重需要善用CNAME,把所有的这些小网站的域名或者二级域名,cname到一个自己定义的统一域名。然后设置这个cname对应的TTL时间足够长。这样的话,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到,也就是直接拿到cname后的记录。然后,第二个cname记录,再设置一个相对合理的TTL值。通过这样,变相加热了第二级域名,通过加热的第二级和缓存时间足够长的第一级,最大化的优化DNS解析时间。该技巧,一定要确保,最后A记录得到的IP,可以服务这些原始域名。

          例子:

          www.abc.com. 7200 IN CNAME hot.abc.com.
          hot.abc.com. 600 IN A 127.0.0.1

          什么叫拆分域名?

          很多网站,在搭建网站的时候,只是申请和购买了一个域名,然后所有内容:图片、js、css、html、php等等,都放在一个域名下。

          而拆分域名,指的就是根据不同的应用,而将域名拆分出来。

          拆分域名有什么好处?

          使用IE6和IE7内核的浏览器,针对同个域名,只会同时发起2个连接。
          使用IE8内核的浏览器,针对同个域名,可以同时发起6个连接。

          很重要吗?

          非常重要,请看图示。

          使用IE6打开一个所有内容均在同个域名下的网站

          使用IE8打开一个所有内容均在同个域名下的网站

          我们看到的是,在IE6的情况下,请求第7个元素,需要0.7s,而在IE8的情况下,0.277就开始请求第7个元素。

          由此可以看到,并发连接更多的时候,网页打开速度会更快。

          由以上数据可以看到,多个域名,不管是在IE6和IE8的情况下,拆分域名,都会使网站的打开速度变快。

          现实中也是如此,新浪、淘宝等大型网站,他们无一不是在拆分域名。

          另外,要纠正一个IT人的误区。因为IT人一般都热衷技术,很多人的操作系统等版本都很新,用的都是IE8甚至以上的浏览器。但是整个中国,到目前为止,使用IE6和IE7的用户,仍然非常另IT人震惊的80%左右。所以,拆分域名,基本上可以缩减你20%以上的打开速度。

          一个简单的操作,就能带来巨大的效果提升,何乐不为?

          当然了,肯定会有人问,拆分域名,那不就会导致域名热度不够,DNS缓存不住的问题吗?这个问题,请看我上一篇博文,已经给出了答案。

          按照什么原则拆分域名呢?

          个数多少合适?

          一般50M以下网页类网站,域名保持在4、5个即可,过多后范围会导致你的维护和使用变得复杂。

          100-500M以下网页类网站,域名保持在8-10个左右。

          1G以上的网页类网站,域名无所谓个数,保持10个以上,具体个数根据自己的业务和管理特点随心制定。

          什么内容放到同个域名下?

          页面类:html、htm等

          样式类:js、css等

          图片类:jpg、png、gif等

          动态类:php、asp等

          这样的分配方式,将来有利于你进一步优化你的网站,并且在你需要寻找加速工具时,也可以针对性的选择不同的加速方式。

          作者:王康

          文章来源:xmw2.blog.chinaunix.net

          更多文章