我们在需要下载很多内容的时候,很容易想到做分域名的并发下载,给原来的服务器多分几个域名,因为分不同的域名可能可以在浏览器中分到更多的下载进程,提高下载速度。
但是在做网络应用的时候,我们的一个域名下面有的时候会有多个ip多台服务器,分布在不同的机房,这个时候浏览器会在可选的ip里面随机的选择一个ip。用nslookup可以看到可选的ip,用ping可以看到当前正在实用的ip。
在多个ip的情况下,对具体的一个用户,往往是连接到某些ip特别快,而连接到某些ip就不怎么块。比如我现在有一个域名(和它的几个分域名),在深圳访问的时候有2个ip可以分,其中一个是深圳本地的服务器,一个是外地的服务器。这个时候如果页面打开需要用到的关键资源依赖于这个域名,那么分域名有可能对速度不是提高而是有反作用。
因为这种情况下,慢的资源成为了瓶颈,变成是速度的决定因素。我本来有一半的机会是快的,一半的机会是慢的,如果现在分两个域名去下载关键资源,变成有1/4的机会是两个域名都分到深圳的服务器,可以有提高,而3/4的机会是有一个以上的域名分到外地的服务器,反而变慢了,这样提高的是少部分人的感受,而多数人的感受没有提升或者变的更差。如果简单的按照yahoo的优化建议分散到4个域名上,那么这个比例就变成1:15,更差了。
因此分域名下载不能简单的绝对化的看待,要看实际应用场景做决定。