Answers:
Google在 其DevTools文档评估网络性能”部分。
堵转/堵转
请求等待发送之前花费的时间。此时间包括在代理协商中花费的任何时间。此外,此时间将包括浏览器等待已建立的连接可供重新使用的时间,同时遵守Chrome的最多六个时间每个原始规则 TCP连接。
(如果您忘记了,Chrome会在鼠标悬停工具提示和“时间”面板下提供一个“说明”链接。)
基本上,您会看到这的主要原因是,Chrome一次只能为每个服务器下载6个文件,并且其他请求将被暂停,直到连接插槽可用为止。
这不一定需要解决,但是避免停滞状态的一种方法是将文件分布在多个域名和/或服务器上,并在需要时考虑CORS,但是HTTP2可能是一个更好的选择向前走。资源捆绑(例如JS和CSS串联)也可以帮助减少停顿的连接数量。
file:///C:/...
经过进一步调查,发现“停顿”和“排队”范围之间没有显着差异。两者都是从其他时间戳记的增量计算得出的,而不是从netstack或渲染器提供的。
当前,如果我们正在等待套接字可用:
- 如果发生代理协商,我们称之为停滞
- 如果不需要代理/ ssl工作,我们将其称为排队。
这来自Chome-devtools的官方网站,它可以帮助您。在这里我引用:
- 排队 如果请求排队,则表明:
- 由于请求的优先级低于关键资源(例如脚本/样式),因此渲染引擎推迟了该请求。这通常发生在图像上。
- 该请求被搁置以等待即将释放的不可用的TCP套接字。
- 由于浏览器在HTTP 1上每个源仅允许六个TCP连接,因此该请求被暂停。花费在制作磁盘缓存项上的时间(通常非常快)。
- 停顿/阻塞 时间请求发送之前等待的时间。它可能正在等待队列中描述的任何原因。此外,此时间包括在代理协商中花费的任何时间。
由于许多人来到这里调试他们的慢速网站,因此我想向您介绍我的情况,而Google的解释都无法解决这个问题。我的巨大停滞时间(有时是1分钟)是由于Windows上运行Apache的工人线程太少而无法处理连接,因此它们正在排队。
如果您的apache日志有以下注释,则可能适用于您:
Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting
此问题已在Apache httpd.conf中解决。取消注释: 包括conf / extra / httpd-mpm.conf
并编辑httpd-mpm.conf
<IfModule mpm_winnt_module>
ThreadLimit 2000
ThreadsPerChild 2000
MaxConnectionsPerChild 0
</IfModule>
请注意,您可能不需要2000个线程,或者可能需要更多线程。对于我的情况,2000年还可以。