Firebug Net Panel中“Blocking”的含义是什么?

我使用的是Firebug 1.5.2,在生产发布之前testing一个站点时,我可以看到“阻塞”部分请求所消耗的大量时间。

“阻塞”是什么意思?

以前的“阻止”(早期版本的FireBug)被称为“排队”。 这实际上意味着请求正在排队等待可用的连接。 据我所知默认情况下永久连接的数量限制在Firefox的最新版本到6,IE8也是6.早些时候,它只有2.它可以由用户在浏览器设置更改。
还据我所知,虽然JavaScript文件正在加载,所有其他资源(CSS,图像)被阻止

阻塞是一个术语,用于描述阻止其他事件或代码处理的事件(在同一个线程中)。

例如,如果使用“阻塞”套接字,那么套接字请求完成后的代码将不会被处理,直到请求完成(在同一个线程中)。

asynchronous活动(非阻塞)只会发出请求,让其他代码在请求发生在后台时运行。

在你的情况下,它基本上意味着萤火虫/浏览器的某些部分不能激活,直到其他部分完成。 即下载更多之前,它正在等待图像下载。

据我所知,有两个原因导致组件阻塞他人加载。

  1. 浏览器强制执行(但通常是可configuration的)一次可以从一个特定主机加载多less个并行资源的限制。
  2. 内嵌的JavaScript,这可能会导致浏览器等待,看看是否需要继续下载其余的组件(以防万一JavaScriptredirect或replace页面的内容)

这意味着“等待连接”。 正如Mozilla的正式文档中所解释的,“阻塞”是“排队等待networking连接的时间”。 这可能是由于Firefox触及其内部并行连接限制,正如这里所解释的和在这里的答案。

它也可能意味着“因为服务器正忙”而等待。 上面链接的官方文档中没有提到“阻塞”时间的一个可能原因:当服务器由于负载过重而无法提供连接时,可能会发生这种情况。 在这种情况下,连接请求会进入服务器的队列中,直到工作进程变为空闲时才能处理它[ 源 ]。

从技术上讲,这样的连接还没有build立,因为请求正在等待accept()从服务器[ source ]。 也许这就是为什么它被包含在Firefox的“阻止”之下,因为它也可以被认为是“排队等待networking连接的时间”。

(但是,从Firefox 51开始,这种行为并不完全一致:对于在新选项卡中调用的第一个URL,服务器接受连接请求之前的时间在“定时”选项卡中根本不计算 – 仅用于input后续URL这两种行为都可能是一个错误,我不知道是哪一个。)