原文连接:https://blog.csdn.net/a562550212/article/details/79552713面试
另附原文做者贴的一个知乎地址,几个答主讲的很是好 https://www.zhihu.com/question/20474326chrome
解决方案:
有关网络问题,通常都是查看浏览器的network。经过查看network发现,chrome浏览器在同一时间内向同域至多发起6个请求。以后的请求,须要等待前6个返回后才能技术发送。总结:同一时间针对同一域名下的请求有必定数量限制,超过限制数目的请求会被阻塞。知乎用户王納米浏览器
图上白线部分表示当前请求等待时间。服务器
知识解析:
1. 查看浏览器开发者工具network的Timing流程,了解其对应的含义
我尽可能用中文进行翻译,若是有错误的地方,还但愿能指出,我修改。
Firefox浏览器网络
项目 价格
阻塞(Blocked) 网络链接排队的时间
浏览器强行加入对同域服务器同时发起连接的请求数限制。在Firefox里默认为6个,可是能够经过firefox提供的 network.http.max-persistent-connections-per-server(在url中输入about:config)。若是全部的链接都在使用,浏览器没法下载更多的资源知道其中一个被释放。
DNS 解析(DNS resolution) 解析域名为ip地址的时间
握手协议(TLS创建) 三次握手,确保链接成功
发送请求(Sending) 发送HTTP请求到服务器的时间
等待(Waiting) 等待服务器的响应(这个时候就得看服务器处理能力了)
接收(Receiving) 获取当前请求的完整数据包(大部分咱们的响应成功是200,有些大文件,http会分片,根据content-Range)
2. 浏览器为何要作请求限制?
网上的说法挺好,这里直接引用了。并发
是基于端口数量和线程切换开销的考虑,浏览器不可能无限量的并发请求,所以衍生出来了并发限制和HTTP/1.1的Keep alive。 因此,IE6/7在HTTP/1.1下的并发才2,但HTTP/1.0倒是4。 而随着技术的发展,负载均衡和各种NoSQL的大量应用,基本已经足以应对C10K的问题。 但却并非每一个网站都懂得利用domain hash也就是多域名来加速访问。所以,新的浏览器加大了并发数的限制,但却仍控制在8之内负载均衡
因为 TCP 协议的限制,PC 端只有65536个端口可用以向外部发出链接,而操做系统对半开链接数也有限制以保护操做系统的 TCP\IP 协议栈资源不被迅速耗尽,所以浏览器很差发出太多的 TCP 链接,而是采起用完了以后再重复利用 TCP 链接或者干脆从新创建 TCP 链接的方法。
若是采用阻塞的套接字模型来创建链接,同时发出多个链接会致使浏览器不得很少开几个线程,而线程有时候算不得是轻量级资源,毕竟作一次上下文切换开销不小。
这是浏览器做为一个有良知的客户端在保护服务器。就像以太网的冲突检测机制,客户端在使用公共资源的时候必需要自行决定一个等待期。当超过2个客户端要使用公共资源时,强势的那个邪恶的客户端可能会致使弱势的客户端彻底没法访问公共资源。从前迅雷被喷就是由于它不是一个有良知的客户端,它做为 HTTP 协议客户端没有考虑到服务器的压力,做为 BT 客户端没有考虑到本身回馈上传量的义务。
————————————————
dom