响应时间依赖于DNS解析器(通常由你的ISP提供),它所承受的请求压力,你与它之间的距离和你的带宽速度。
如何减少页面花在DNS查找上的时间很关键。
DNS缓存和TTL
DNS查找可以被缓存起来以提高性能
用户请求一个主机名之后,DNS信息会留在操作系统的DNS缓存中,之后对于该主机名的请求将无需进行过多的DNS查找,至少短时间内不需要。
浏览器的缓存和操作系统的缓存相分离
只要浏览器在其缓存中保留了DNS记录,它就不会麻烦操作系统来请求这个记录。
只有当浏览器缓存丢弃这个记录的时候,它才会向操作系统询问地址,然后操作系统或者通过其缓存来响应这个请求,或者将请求发给一台远程服务器,这时候就会发生潜在的速度降低。
影响DNS缓存的因素
1.服务器可以表明记录可以被缓存多久。查找返回的DNS记录中的TTL值(即Time-to-live)能告诉客户端可以对该记录缓存多久。
浏览器通常忽略TTL值并设置自己的时间限制。只要浏览器和Web服务器愉快的通信着(并保持TCP连接打开的状态)就不需要进行DNS查找。
2.浏览器对缓存的DNS记录有数量上的限制,而且不管缓存记录的时间。如果用户在短时间内访问了很多不同域名的网站,较早的DNS记录会被丢弃,此时必须重新查找。
避免使用过短的TTL值,选择较长的TTL值以减少DNS的查找并降低其名称服务器的负载。
浏览器的视角
Microsoft Windows上的DNS缓存由DNS Client服务进行管理,包括IE浏览器和火狐浏览器。
可以使用ipconfig命令来查看和刷新DNS Client服务
ipconfig/displaydns(查看)
ipconfig/flushdns(刷新)
这两个浏览器都有自身的DNS缓存。重启浏览器会清空浏览器缓存,但不会清空DNS Client服务缓存。
总结
<strong><em>通过使用Keep-Alive和较少的域名来减少DNS查找</strong></em>
当客户端的DNS缓存为空(浏览器和操作系统都是)时,DNS查找的数量与Web页面中唯一主机名的数量相等。这包括页面URL,图片,脚本文件,样式表,Flash对象等得主机名。
减少唯一主机名的数量就可以减少DNS查找的数量
减少唯一主机名的数量会潜在地减少页面中并行下载的数量。
避免DNS查找降低了响应时间,但减少并行时间可能会增加响应时间。
建议是将组件分别放到至少2个,但不要超过4个主机名下。这是在减少DNS查找和允许高度并行下载之间做出了很好的平衡。