利用多域名存储静态资源进行性能优化:网站的静态资源为何要使用独立域名

  在大型网站中,咱们发现页面资源常常使用不一样的域名进行引用,例如126邮箱的部分js、css、图片存放于http://mimg.127.net/域名下,京东的部分静态图片存放在http://img11.360buyimg.com域名下,那这样作究竟有什么好处呢,和性能又有什么关系呢,下面进行具体分析。css

1、浏览器并发请求数的限制
浏览器

  咱们进行网站页面访问时的客户端是浏览器,浏览器的不少机制对网站的访问速度有很大的影响(例如浏览器对静态资源的缓存机制),此外浏览器为提高页面显示效率,支持并发获取资源,可是同一时间针对同一域名下的请求有必定数量限制,超过限制数目的请求会被阻塞。大多数浏览器的并发数量都控制在6之内。有些资源的请求时间很长,于是会阻塞其余资源的请求。所以,对于一些静态资源,若是放到不一样的域名下面就能实现与其余资源的并发请求。缓存

  此外,浏览器对并发请求的数目限制是针对域名的,即针对同一域名(包括二级域名)在同一时间支持的并发请求数量的限制。若是请求数目超出限制,则会阻塞。所以,网站中对一些静态资源,使用不一样的一级域名,能够提高浏览器并行请求的数目,加速界面资源的获取速度。服务器

  于是后来衍生了domain dash来加大并发数,可是过多的域名会使DNS解析负担加剧,所以通常控制在2-4个cookie

  对于图片资源的加载,利用css sprites技术,结合background的定位在同一张图片中加载多个图片,这也是减小并发数量的一种经常使用方法。网络

2、网络请求时cookie传输并发

  当静态资源与主服务在同一域名下(根据业务须要,主服务请求时须要传递cookie信息),每次静态资源的请求,都会发送同域名下的cookie。而对于静态资源,服务器无需对cookie进行任何处理,它们只是在毫无心义的消耗带宽。负载均衡

  假设网站cookie信息有1 KB、网站首页共150个资源时,用户在请求过程当中须要发送150 KB的cookie信息,在512 Kbps的常见上行带宽下,须要长达3秒左右才能所有发送完毕。不少状况下cookie的path是在整个一级域名下可用的,若是你把静态资源设置成二级域名,那么它也避免不了cookie。例如若是给 http://126.com 设置了cookie,那么会感染全部子域名, 请求 http://www.126.com/logo.gif或者http://image.126.com/logo.gif 时便会带上讨厌的cookie。dom

  因此对于静态资源使用单独的域名,并设置为无cookie,以减小请求大小,提升网页性能。性能

3、方便分流或缓存

  咱们知道,当面对大并发访问时,在服务端会有相应的缓存机制,例如咱们会在CDN中缓存一些静态资源,以便用户能够经过就近的网络节点获取资源。例如新浪微博在加载资源时,不少就放在了阿里的CDN上。

  此外,独立的域名也方便咱们在代理服务层作动静分离,以便提高静态请求的处理速度。

  CDN缓存:CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,经过中心平台的负载均衡、内容发布、调度等功能模块,是用户就近获取所需内容,下降网络拥塞,提升用户访问响应速度和命中率。CDN的关键技术主要是内容存储和分布技术。简单来讲,CDN主要用来使用户就近获取资源。

相关文章
相关标签/搜索