域名TTL值怎样设置更合理?

作者:浮夸的晓编 分类:互联网 发布于:2013-11-19 字体大小:T | T
  最近见到网上有人说DNSPod的解析有问题,google蜘蛛无法访问,DNSPod每天的解析量这么大,碰上勤劳的google蜘蛛,其实出现这种问题个人感觉也是正常的。要解决这个问题其实很简单把TLL设大点就好了。DNSPod的默认值是300(300秒)这明显太低了,那个网站会5分钟换一次IP?建议那些不经常换IP的人最少设置为7200以上,个人网站设置成86400(一天)也没啥关系,真那天要换IP或主机的时候,提前一天把TTL改小就行了,这样换的时候生效也快。

  什么是域名的TTL值?

  TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

  域名DNS分两种,一种是权威域名服务器,域名注册商的服务器都为权威域名服务器,TTL值只能在权威服务器修改,还有一种域名解析服务器就是缓存DNS服务器,比如各地ISP上网设置的DNS服务器,它的作用主要是把域名解析结果缓存到本地,方便你查询。域名DNS的TTL值实际上就是各地的DNS缓存服务器多久去你的权威域名解析服务器(NS)获取一次你域名的解析IP。

  那么域名解析的TTL只应该设置为多少合适呢,下面有两个建议,你可以结合自己参考一下:

  一、增大TTL值,可节约域名解析时间,给网站访问加速

  一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。你可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。

  国内和国际上很多平台的TTL值都是以秒为单位的,很多的默认值都是3600,也就是默认缓存1小时,这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?你可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成86400。

  二、减小TTL值,减少更换空间时的不可访问时间。

  更换空间因为TTL缓存的问题,新的域名记录,在有的地方可能生效了,有的地方可能等上一两天甚至更久才生效。结果就是有的人访问到了新服务器,有的人访问到了旧服务器。如果原来的域名TTL值设置的小,各地的ISP域名缓存服务器服务器就会很快的访问你域名的权威DNS解析服务器,尽快把你域名的DNS解析IP返回给查询者。

  这就是说如果想要解析速度,各地ISP的DNS服务器缓存你的域名,你就需要把TTL值设置大一些,如果想让域名更换空间或者IP后能尽快解析到新的IP上,就需要把TTL值设置小一些。

  对于IP地址相对固定,或短期内不会变更IP地址的用户来说TTL值设置的大些如几个小时或更大些为宜。调大TTL值可以显著的提高域名的解析稳定性和速度。而对于近期有计划变更IP地址的用户需要提前把TTL值改小,以便使缓存在世界各地DNS服务器上的旧域名记录迅速过期,等IP地址固定下来后再把TTL值改大。

  1,什么是DNS服务器?

  互联网是由无数台服务器和PC连接在一起组成的,每个服务器都会有一个唯一的数字标识,叫IP地址,IP地址是数字表示的,比如218.231.156.61服务器,pc之间的通信协议用的是TCP/IP协议,在底层通信里面,通信双方都是凭借IP地址和对方联系的,并没有域名参与。域名是给人记忆用的,为了能够把人记得住的名字转换成机器认识的IP地址,就需要DNS服务器来做这个“翻译”。

  简单讲,DNS服务器就是个“翻译”,或者说是个“字典”,用来把人容易记忆的域名对照翻译成机器使用的数字格式的IP地址。

  2,什么是DNS记录?

  域名有千千万,怎么样才能知道每个域名对应的IP地址呢?答案当然要到DNS服务器(域名服务器)去找,可是谁知道要到哪个DNS服务器去找啊?这就是DNS记录的作用,DNS记录用来明确指明这个域名与IP地址的对应关系保存在哪台DNS服务器中。

  每个域名都要有DNS记录,最多可以有六条记录,一般用2条就足够。

  3,如何更改DNS记录,或者说如何更改DNS服务器?

  域名的DNS记录保存在顶级注册机构那里,例如.com.net保存在verisign那里。顶级注册机构一般不直接接受用户注册请求,域名注册要经过他们的“代理”即注册商来购买,修改DNS记录就需要到这些注册商那里修改。

  4,修改了DNS,为何没生效?

  这个问题有点儿复杂,为了说清楚这个问题,我们必须先搞清楚域名的解析过程,就是域名是如何翻译成IP地址的。

  举个例子:

  当你在浏览器的地址栏输入www.ifukua.com域名解析的过程就开始了:

  第一步:浏览器会查询这个域名与IP的对应关系是不是已经存在于hosts文件中,如果有,直接使用,寻找过程结束。如果没有,进行下一步

  第二步:浏览器询问本机预先设置好的域名服务器,一般用户是由ISP在联网成功后就分配好的。

  第三步:这个域名服务器(称为本地域名服务器)本身并不知道任何域名与IP的对应信息,但是它知道根域服务器的IP地址,所谓根域服务器就是最根源的12个服务器,他们保存了顶级域名的管辖信息,根域服务器会告诉所要查询的域名的IP数据到哪里去找。本地域名服务器就会根据这个线索找到域名的管辖服务器,然后再根据所提供的该域名的DNS记录找到这个域名的真正域名服务器(就是常说的DNS服务器,打个比方:字典),本地域名服务器从这个服务器取得IP信息后,保存在内存中,然后把IP地址返回给浏览器,中间还有很复杂的递归过程,不再赘述。

  在从“字典”取得IP数据的同时,有一个很重要的数据也一同返回,就是这个域名和IP对应关系的有效期,在这个有效期内,如果再有同样的域名请求翻译成IP地址,那这个本地域名服务器就不再到外面去找,而是直接把内存中上次就知道的IP地址返回给浏览器。直到有效期过了,它才会再次到外面去查询。

  同样如果第一次域名查询就失败了,在域名设置的有效期内,该本地域名服务器也不会再去外面找,而是直接告诉你,“这个域名找不到IP地址”。

  好了,域名和IP的查找过程简单讲就是这样,那再来回答问题:修改了DNS,为何没生效?答案很简单:再等等,就生效了

  那你要问,要等多久?有两个环节决定了等待的时间有多长。

  第一个环节就是DNS记录的生效时间,因为域名的DNS记录保存在顶级注册机构哪里,更新不会是实时的,以前要几个小时才会更新,现在不用这么久,顶级域名要快些,几分钟即可,国内要慢些。

  第二个环节是关键,就是这个域名的A记录原来的有效期有多长?你知道吗?可能你自己都不知道。

  一般的注册商会设置成1小时,有的会几个小时。

  如果你原来的域名A记录的有效期是几个小时,那你现在的改动,也得几个小时以后才会生效,前面讲了,本地域名服务器有缓存的。不超过有效期,是不会获取最新变动的。

  所以,看清楚原来的设置,就是TTL的设置是多少(单位是秒,3600秒=1小时),你就知道要多久才会生效了。

  5,TTL是怎么回事?

  TTL就是Time-to-live的缩写,用来表明域名和IP对应关系在多长时间内有效,过了有效期就要重新去查询。

  TTL时间越长,缓存时间越长,更新越不容易及时生效。

  TTL设置的小一些,生效时间就会快一些。