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

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

1. 突破浏览器并发限制 

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

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

Chrome34/326
IE108
IE1113
Firefox27/266
Safari7.0.16

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

2. 节省 cookie 带宽

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

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

3. 更方便 CDN 缓存

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

4. 域名收敛

  • 域名发散

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

  • 域名收敛 

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿彬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值