《高性能网站建设指南》阅读笔记_规则9- 减少DNS查找

来源:互联网 发布:老司机网站 知乎 编辑:程序博客网 时间:2024/06/02 07:35

首先解释几个名词:

DNS:大家都知道是域名系统
TTL(Time- to - live,生存时间):
每个记录都有一个生存时间(TTL)值,这个值就决定了这个纪录什么时候刷新,进而被其他查询取代。在TTL到达之前,Windows解析将返回缓存中的查询结果,而不会开始新的DNS查询。

对美国10大网站的统计,他们发给用户的TTL从1分钟到1小时不等,这是由综合考虑和历史因素造成的。这些拥有巨大数量用户的顶级网站都在努力做到当服务器,虚拟ip地址(http://baike.baidu.com/view/711543.htm)或者联合定位掉线时提供快速故障转移,这也是yahoo提供较短的ttl的原因,但是Myspace则定位到一个联合定位工具,对于当前网络情况,故障转移不是很重要,因此使用较长的TTL以减少DNS查找,也降低了其名称服务器的负载。
DNS Client 服务-- --> 在操作系统客户端的配置:
可以使用控制台的IPConfig命令来观测缓存容量并清空缓存。

通过以下的命令就可以显示缓存的容量,并将结果传送给More指令,从而将结果一次性在一页中显示出来:ipconfig/displaydns

使用一下这个命令来清空缓存:ipconfig/flushdns
Keep-Alive: http构建在TCP上,在http的早期实现中,每个http请求都要打开一个socket连接,这样做效率很低,因为一个web页面中很多的http请求都指向同一个服务器。例如很多web页面中的图片发起的请求都指向一个图片服务器。持久连接的引入解决看多对一请求服务器导致socket连接低效性的问题。

 

浏览器自身也有其DNS缓存(如:IE、Firefox),而它们的配置要在注册表中修改。
每次重新启动浏览器也就自动清空了浏览器的DNS缓存,但它不会清空DNSClient 服务缓存。

Fasterfox
(http://fasterfox.mozdev.org)是一款Firefox的插件,用于测量和改善Firefox的性能。


DNS将主机名映射到IP上,比如你输入www.taoche.com,连接到浏览器的DNS解析器会返回服务器的ip地址。一个url可以对应多个ip,比如我们的对应59.151.102.207105106
DNS解析也是开销,在DNS查找之前浏览器不能从主机名那里下载到任何东西(这一过程通常需要20120毫秒),相应时间依赖于DNS解析器,他所能承担的请求压力,你与它之间的距离和你的带宽速度。实际中操作系统和浏览器做为缓存DNS查找记录,但是浏览器的Keep-Alive属性会覆盖操作系统的缓存过期时间。

 

我们可以发现,减少DNS查找和第六章所提到的“并行下载”是矛盾的,这方面做的最好的是google,它只有一次DNS查找,因为它页面中只有两个组件,所以也不存在影响并行下载的问题。我们的网站不可能只有两个组件,所以这里又需要一个权衡,本书作者建议使用最少两个,最多4个主机名来平衡。我们使用的是img144个,和作者的建议相符合。

 

综上所述:通过使用keep-Alive和较少的域名可以减少DNS查找。
原创粉丝点击