Skip to content

多域名存储资源

利用多个域名来存储和加载网站资源会更有效,主要原因包括以下几点:

浏览器的并发连接限制

大多数浏览器对同一域名的并发请求数量有限制,通常在6-8个之间。

如果所有资源都来自同一个域名,当并发请求达到上限时,后续的请求将被阻塞,直到前面的请求完成。

通过将资源分布在多个域名下,浏览器可以绕过这个限制,从而并行加载更多的资源,减少加载时间,提高页面渲染速度

HTTP/2中,单个域名的并发连接数量限制已被大大提升,不再像HTTP/1.1那样严格限制为6-8个。HTTP/2通过一个长连接来传输所有数据,利用多路复用机制,使得多个请求可以在同一个连接中并行处理

HTTP/2的并发改进

  • 多路复用:允许多个请求和响应在一个TCP连接中并行传输,避免了HTTP/1.1中队头阻塞问题。在HTTP/2中,一个TCP连接可以处理大量的并行请求,因此不再需要通过多个域名来突破并发限制

  • 减少连接开销:由于所有请求在一个连接中并行传输,减少了建立多个TCP连接的开销,从而提高了效率。对于资源丰富的网站,HTTP/2能够更加有效地利用单个域名的连接

HTTP/2下仍使用多个域名的原因:

  • 分散流量压力

  • CDN优化

  • 无cookie域名

减轻主服务器负载

将网站资源(如图片、CSS、JavaScript文件)分布在多个域名或子域名上,能够将请求负载分散到不同的服务器上,减轻主服务器的压力。这种方式可以提升网站的稳定性,并降低服务器的响应时间

利用CDN提升资源加载速度

通过使用不同的域名,还可以将资源部署在CDN上,CDN会根据用户的地理位置自动选择离用户最近的节点提供资源服务,减少网络延迟,提升资源的加载速度。这种方式适合全球用户访问的网站。

资源缓存管理更灵活

多个域名可以方便地为不同类型的资源设置独立的缓存策略。

例如,将静态资源放在一个独立的域名上,并设置较长时间的缓存周期,而对于动态资源使用不同的域名和更短的缓存周期,这样可以提高资源缓存的管理灵活性

避免cookie的传输

在主域名下,所有请求都会携带cookie,而图片、CSS、JS等静态资源并不需要使用cookie。通过使用独立的无cookie域名来存储这些静态资源,可以减少不必要的cookie传输,减少请求的体积,提升传输效率

资源分流与容灾备份

通过多个域名存储资源,当某个域名的服务器出现问题时,仍然可以通过其他域名获取部分资源,提高了网站的容灾能力和稳定性。这种方式也便于在高流量时对不同资源分流,确保流量高峰期间网站能保持较好的响应速度。