【性能优化】(域名发散)为什么主页面和静态资源要置于不同的域名下?

最近有同学问我,同一个网站为什么要把主页面和静态资源(图片等)放置在不同域名下(可能解析的相同的服务器,也可能不同)。这么做的用意是什么呢?且听在下慢慢道来~

1. 突破浏览器并发限制 

浏览器针对同一个域名内资源请求的并发数量有限制( 为了防止DDOS攻击,且不同浏览器对同一个域名下的静态资源并发加载的数量不同 ,若超出最大限制数,超出的请求会被阻塞。浏览器会等待前面的资源下载完毕,然后复用前面连接的 tcp 发起后续的请求。

下面是一些常见浏览器的请求并发数:

Chrome34/32 6
IE10 8
IE11 13
Firefox27/26 6
Safari7.0.1 6

可想而知,如果我们将静态资源放到另外一个域名上,和主页面区分开,就可以突破浏览器的请求并发数限制,减少网页加载时间。不仅仅可以提高同时请求的数量,还能减少主域名下的请求,达到减少网页白屏时间或者DCL、L时间的效果。

2. 节省 cookie 带宽

Cookie 是紧跟域名的。同一个域名下的所有请求,都会携带 Cookie。可想而知,如果我们所有资源都在一个域名下,那么加载那些静态资源也会带上cookie,很明显加大了请求成本。

大部分情况下,对于静态资源的请求是不需要携带cookie的,比如浏览图片、视频等信息。而与主域名不同就不会自动携带cookie所以我们可以通过将静态资源放在另一个域名上来避免携带cookie,节省了请求带宽。

3. 更方便 CDN 缓存

将静态内容和动态请求存放在不同服务器上,更加方便进行 CDN 请求。

4. 域名收敛

  • 域名发散

域名发散是指将静态资源放在多个子域名下,就可以多线程下载,提高并行度,使客户端加载静态资源更加迅速。即本文讨论内容,主页面和静态资源要置于不同的域名下

  • 域名收敛 

域名收敛是指将静态资源放在一个域名下。减少DNS解析的开销。

由于浏览器解析DNS也需要花费时间,太多域名会导致解析时间过长,访问速度反而过慢了。

所以我们需要控制页面中出现的域名数。一般来说,主站+CDN两个域名比较合理。

猜你喜欢

转载自blog.csdn.net/qq_38974163/article/details/126667968
今日推荐