`
异步获取爱
  • 浏览: 80018 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论

对同一域名进行请求的并发连接数限制

 
阅读更多
    在以前的公司一直都有一个困惑,就是网站的图片等的请求,总是会有


    也就是请求了一定量的静态文件之后,就必须要等之前的请求完毕的,然后再去请求剩下的。也就是我们理解的,请求有一个并发的限制,一旦到了这个数目,其实就要阻塞,直到前面的完成之后再去请求。如此,明显会影响网站请求的性能。
   
    现在来到了新的公司,发现了公司的项目的请求的情况是


    也就是,仔细看的话,会发现其实请求的地址都是指向同一个路径的。后来仔细去网上搜了下文章,下面这篇文章我觉得把这个情况讲的非常的详细。我这个小菜鸟就不自己写了,相信这篇文章一定能你知道的很清楚。


========================== 华丽分割线 ============================


从Yahoo!关于网站优化的经典14条建议,在V2版中,已经更新到35条了,其中有需要减少请求连接数和减少DNS解析次数,由于在http协议中有对浏览器并发请求连接数的限制,1.1版本中规定了是2个(相关资料可以查看文章的结尾),于是通常的优化网站加载速度的方法是采用多个域名增加浏览器对同一网页的请求并发连接数。

如淘宝网的图片会出现在如下众多域名下:

img01.taobaocdn.com,mg02.taobaocdn.com,img03.taobaocdn.com 。。。

ping一下上述地址,就会发现img01,img03,img04的IP都是:121.14.63.250,说明它们其实都指向了同一台服务器或同一路由服务器。

显然这样的做法与Yahoo!14条或者22条或者35条中的Reduce DNS lookups规则是相违背的,

这需要在提高并发连接数和减少DNS解析之前寻求到一个平衡点,以达到适合自己网站的最快速度。

然而随着家庭宽带带宽的增加,普通用户上网速度的增加,

Yahoo!的14条也变成了新的22条或者35条,

说明在带宽不一样的今天,网站优化的原则也有所改变,

那么各个浏览器包括IE和Firefox是不是仍然严格地遵循着Http协议中关于2个并发连接数的限制呢?

下面就来验证一下看看。

首先来看看Windows XP英文版IE8的并发连接数,

在开始菜单中的运行对话框中输入 regedit 打开注册表编辑器,

依次打开注册表项:[HKEY_CURRRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings],

可以看到MaxConnectionsPerServer和MaxConnectionsPer1_0Server两个选项的值都是10,而不是Http协议中规定的2个!

如图所示:

再看看Firefox的相关配置:

在Firefox地址栏中输入:about:config

然后在配置页面中搜索:max,可以看到network.http.max-connections的值是30,

network.http.max-persistent-connections-per-server的值是6,

也都不是协议所规定的2。

如图所示:

最后我们可以动手来写一个简单的JS函数来验证一下浏览器对同一域名(Server)的并发连接数的限制,

写一个发送Ajax请求的函数,其请求的后台页面做延迟响应,如php中用sleep(3)。

然后写16个调用语句,再写一个发送Ajax请求的语句,这个请求地址的后台页面收到请求后立即返回响应数据,

Demo地址如:http://developer.oncecode.com/comet/

分别测试IE8、Firefox 3.6.8和chrome 5.0,

不难得出结论:

IE8的并发连接数限制为10;

Firefox 3.6.8和chrome 5.0的并发连接数都为6。

Yahoo!关于网站优化的35条建议,参见网址:

http://developer.yahoo.com/performance/rules.html

具体规范见“All”部分。

http协议1.1版本中对浏览器并发请求连接数的2个限制,参见网址:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4

Practical Considerations部分最后一段:

Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.
分享到:
评论

相关推荐

    浏览器连接数限制

    在当前的Web开发实践中,许多开发人员可能会忽视浏览器最大并发连接数这一限制因素。例如,IE6和IE7浏览器允许6个并发连接,IE8、Firefox 3、Chrome 10、Safari 3/4、Opera 10等允许4个并发连接。而根据HTTP协议的...

    Nginx 合并请求连接且加速网站访问实例详解

    当然浏览器的并发请求数目限制是针对同一域名的,同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。 首先我们看下各个浏览器的并发连接数: 罗列一下浏览器这么决定可能有什么考虑 由于...

    高并发Web网站构建和安全防护

    为了提高用户体验,现代浏览器通常会限制对同一域名的并发连接数,例如Chrome浏览器对同一域名下的并发连接数限制为6个。这种设计可以避免因为过多的并发请求而造成网络拥塞,但也意味着对于包含大量元素的页面,...

    工作积累(18)-browser的文件下载时发出多个GET请求

    4. **并发请求**:浏览器通常会限制同一域名下的并发连接数,以防止过多的请求导致服务器压力过大。但为了加快下载速度,浏览器可能会同时对同一文件发起多个GET请求,直到达到并发限制。 5. **重试机制**:在遇到...

    p98 - p114 HTTP2牛逼在哪

    2. **并发连接有限**:浏览器对同一域名的最大并发连接数通常是6个,每次连接都需要TCP和TLS握手,增加了延迟并影响了流量。 3. **队头阻塞**:HTTP/1.1在同一连接上必须依次处理请求和响应,导致后续请求等待,...

    Linux下apache如何限制并发连接和下载速度

    这两个模块是非官方的Apache模块,提供了对同一IP地址的并发连接数和下载速度的限制。 首先,我们需要下载并安装这两个模块。可以通过wget命令从指定的URL获取源代码包,例如: ``` wget ...

    nginx与apache限制ip并发访问 限制ip连接的设置方法

    Nginx是一款高效的反向代理和负载均衡服务器,它提供了内置的机制来限制同一IP地址的并发连接数。以下是在Nginx中设置限制的方法: 1. **添加limit_zone指令**: 在`http`上下文中定义一个命名空间(如`one`)并...

    二级域名空间申请系统.rar

    IIS并发数是指同一时间可以处理的连接请求数量,而带宽流量则限制了网站数据传输的总量。这些限制旨在防止资源滥用,确保所有用户公平使用网络资源。 4. **更新与卸载组件**:压缩包中的“更新组件.bat”和“卸载...

    okhttp中连接池实现

    此外,全局连接池也有最大连接数的限制,这是OkHttp整体资源管理的一部分。 4. **连接的健康检查**:OkHttp会定期检查连接池中的连接是否依然有效。如果一个连接在尝试使用时失败,那么它会被标记为不可用,并从...

    基于.net中突破每客户端两个http连接限制的详细介绍

    通过设置`DefaultConnectionLimit`,你可以指定每个客户端可以同时打开到一个特定服务点(通常是一个IP地址或域名)的最大连接数。例如,将其设置为512,将允许更多的并发请求,从而提高数据传输效率。但需要注意的...

    图片服务器分离

    "图片服务器分离" 图片服务器分离是大型网站架构中的一种解决方案,旨在将图片存储从网站中分离出来,另外架构一个或...此外,使用独立域名也可以提高图片服务器的性能,可以避免同一域名下浏览器的并发连接数有限制。

    大型WEB网站架构深入分析-图片服务器分离.docx

    1.4.2 **采用独立域名**:使用独立的图片域名(而非子域),可以规避浏览器对同一域名并发连接数的限制,提高图片加载效率。例如,Yahoo!使用yimg.com作为其图片服务器的域名,而不是img.yahoo.com。 此外,如果...

    完美解决大量图片下载卡顿问题

    2. **浏览器并发限制**:大部分浏览器对同一域名下的并发请求有上限,超过这个限制,其他请求会被阻塞。 3. **内存资源消耗**:大量图片加载到内存中,可能导致内存溢出。 4. **服务器压力**:大量请求可能会使...

    js代码-最大并发数/JS限流调度器

    浏览器通常对同一域名下的并发HTTP连接数量有限制,以防止一个站点占用过多带宽。例如,大多数现代浏览器默认允许同时进行6个HTTP/1.1请求。通过合理设置并发数,可以确保多个请求按需分配,避免阻塞或延迟其他请求...

    构建高效的python requests长连接池详解

    1. **限制连接池大小**:可以通过设置`max_connections`参数限制每个主机的并发连接数,以避免资源浪费。 ```python from requests.adapters import HTTPAdapter s = requests.Session() s.mount('http://', ...

    使用谷歌jquery库文件的理由

    浏览器为了防止对服务器造成过大的负担,通常会对同一域名下的并发连接数量进行限制。例如,一些较旧的浏览器可能只允许每个域名同时建立两个连接。因此,当一个页面中包含大量资源时,如果这些资源都来自同一个域名...

    究竟啥才是互联网架构“高并发”

    在互联网技术中,**高并发**(High Concurrency)是指系统能够在同一时间内处理大量并发请求的能力。这不仅仅是技术挑战,更是衡量一个分布式系统设计是否合理的重要指标。高并发系统的构建涉及到多方面的考量和技术...

    计算机网络期末复习.docx

    面向连接的TCP服务进程通常都工作在并发服务方式,服务进程在同一时间可同时向多个客户进程提供服务。(并发服务) 在TCP服务进程与多个客户进程之间必须建立多条TCP连接,每条TCP连接在其数据传送完毕后释放 一个TCP...

    Nginx高性能Web服务器详解(完整版)pdf下载

    12. **限速与限流**:Nginx可以限制客户端的请求速率和并发连接数,防止DDoS攻击。 13. **健康检查**:Nginx可以对后端服务器进行健康检查,自动屏蔽异常服务器,确保服务的稳定性。 14. **虚拟主机**:Nginx支持...

Global site tag (gtag.js) - Google Analytics