浏览器请求与域名的关系

在最近的面试中被问到了这样一个问题:

百度搜索的图片资源来自跟百度不同的域名 imgstat.baidu.com, 原因是什么,这样做有什么好处。

平时这方面不太注意,一时半会答不上来,回来之后照着这个问题在网上学习了一下, 好处有以下:

 

1.  不必每次请求都携带cookie 信息 -- cookie free。

说明: 按照传统的方式,假设网站的 cookie 信息有 1kb, 如果网站上有150个资源的时候,则请求的过程中需要携带 1kb * 150 = 150kb 的数据。多多少少会对速度造成影响。而且这个信息在请求js/css/img/flash 这些静态资源上,几乎是没有必要的。解决方案是启用和主站不同的域名来放置静态资源。

 

2. 多个域名可以加大并发数 ( 因为浏览器对一个同一个域名的请求并发数量是有限制的 )

比如,某个浏览器对一个域名的并发数是6, 如果我们设置n个服务器域名,那么并发数可以达到 6n,但是n 也不宜过多。

说明:

将css放置在页面最上方应该是很自然的习惯,但第一个css内引入的图片下载是有可能堵塞后续的其他js的下载的。而在目前普遍过百的整页请求数的前提下,浏览器提供的仅仅数个并发,对于进行了良好优化甚至是前面有CDN的系统而言,是极大的性能瓶颈。 这也就衍生了domain hash技术来使用多个域名加大并发量(因为浏览器是基于domain的并发控制,而不是page),不过过多的散布会导致DNS解析上付出额外的代价,所以一般也是控制在2-4之间。 这里常见的一个性能小坑是没有机制去确保URL的哈希一致性(即同一个静态资源应该被哈希到同一个域名下),而导致资源被多次下载。
 

答案内容来自知乎:

作者:黄良懿

链接:https://www.zhihu.com/question/20474326/answer/15696641

posted @ 2018-06-30 10:59  KingCong  阅读(868)  评论(0编辑  收藏  举报