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


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

    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两个域名比较合理。

  • 相关阅读:
    Java代码审计详解
    大数据与人工智能人脸识别
    Unity3D C# 反射与特性的配合使用
    java计算机毕业设计红河旅游信息服务系统源码+数据库+系统+lw文档+mybatis+运行部署
    .Net Core WebApi 6.0 及Swagger文档基本创建
    AI实战营第二期 第八节 《MMSegmentation代码课》——笔记9
    C++入门教程(十、联合体)
    JavaSE - 深度探讨继承与多态,私有成员是否被继承问题
    【21天学习挑战赛】荷兰国旗问题到快速排序
    【C++】list的介绍及使用说明
  • 原文地址:https://blog.csdn.net/qq_38974163/article/details/126667968