浏览器中的最大并行HTTP连接数是多少?
在本教程中,我们将学习浏览器中的最大并行HTTP连接数。
为了更多地了解这个主题,我们将首先了解什么是并行连接、阻塞背后的原因以及如何解决它,以及浏览器的限制。
并行连接
通过完全请求原始HTML页面、第一个嵌入项、第二个嵌入对象等,浏览器可以顺序地处理每个嵌入对象。但这速度太慢了!HTTP使客户端能够建立连接并并行执行多个HTTP事务。
并行连接可以加快页面加载速度。如果包含嵌入对象的复合页面使用单个连接的带宽和缓慢的时间,它们可以加载得更快。如果单个链接没有耗尽客户端的互联网带宽,则可以重叠延迟,并且可以使用额外的带宽来加载其他对象。
并行连接看起来可能更快。并行连接并不总是能提高页面加载速度。但是,即使它们没有加快页面传输速度,并行连接也经常给用户留下页面加载速度更快的印象,因为他们可以看到多个组件对象同时出现在屏幕上时的进度。人们认为,如果屏幕上有很多活动,网页加载速度会更快,即使秒表显示总页面下载时间更慢。
阻塞
浏览器只能并行连接到同一主机这么多次。因此,最大连接数为60,每个主机的最大连接数根据使用的浏览器而异,从2到13不等。这通常被称为阻塞或停滞,它与浏览器中可用的连接数直接相关。现在我们将看到阻塞中提出的一些重要问题。
阻塞是什么意思?
当文件必须等待连接打开才能开始下载到浏览器时,这被称为阻塞。从本质上讲,文件在一个队列中等待与服务器的连接打开,然后才能提供给网站访问者。
为什么发生阻塞?
当需要加载的文件多于打开的连接数时,就会发生阻塞。一旦页面的HTML加载,CSS、JavaScript、图片和其他文件将开始从服务器下载,从而允许这些元素显示在您的浏览器中。除非另有说明,否则这些文件将同步加载,并按照它们在网站代码中出现的顺序加载。当浏览器达到其连接配额时,请求加载的额外文件必须等到另一个连接可用。
如何防止阻塞?
似乎拥有更多可用的连接会大大提高浏览器(和Web)性能,但这样做可能会给服务器带来很大的负担。如果您的浏览器可以支持60个连接而不是6个,则服务器可能只能管理10%的流量。一些浏览器(Opera、IE10、11和12)允许您增加可用连接的数量。但是,除非您对服务器运行负载测试,否则通常不建议这样做。增加的连接会对服务器的性能产生负面影响,也可能被服务器视为DDoS攻击。
保持前端和后端之间的平衡对于增强浏览体验和防止阻塞影响网络速度至关重要。您还可以考虑使用Ajax调用或异步文件加载。甚至文件加载的顺序也由您决定。如果某个图像比您的客户评论对页面更有价值,请考虑打包该图像。
浏览器连接限制
浏览器限制了来自同一域名名的HTTP连接数量。HTTP规范定义了此约束(RFC2616)。当前浏览器通常允许每个域六个连接。大多数旧版浏览器将连接限制为每个域两个。
根据HTTP 1.1协议,单用户客户端不能维持多于两个到任何服务器或代理的连接。浏览器限制的目的是为了这个。RFC 2616 - 超文本传输协议,第8部分 - 连接包含更多详细信息。
这不如现代浏览器灵活,现代浏览器支持更多连接。RFC没有提到如何阻止超过限制。连接可能会被关闭,或者它们打开的能力可能会受到限制。
浏览器版本 | 每个主机名的连接数 | 最大连接数 |
---|---|---|
Chrome 34/32 | 6 | 10 |
Internet Explorer 9 | 6 | 35 |
Internet Explorer 10 | 8 | 17 |
Internet Explorer 11 | 13 | 17 |
Firefox 27/26 | 6 | 17 |
Safari 7.0.1 | 6 | 17 |
Android 4 | 6 | 17 |
Chrome Mobile 18 | 6 | 16 |
Internet Explorer Mobile 9 | 6 | 60 |
我们可以使用相同的连接提交多个请求吗?
HTTP 1.1中的持久连接 HTTP 1.0有一些限制,例如每个连接一个请求的限制。这意味着每个网络请求将形成一个新的连接通道。
由于建立连接需要成本,HTTP 1.1引入了持久连接的概念。(此功能后来也添加到HTTP 1.0中。)
持久连接可以重复使用,并在一段时间内保持打开状态,从而无需为每个连接请求进行新的TCP握手。
借助此功能,我们可以通过相同的连接通道发送连续的请求。