46

我正在使用 Firebug 1.5.2,并且在生产发布之前测试站点时,我可以看到“阻止”部分请求所消耗的大量时间。

“阻塞”到底是什么意思?

4

4 回答 4

29

“阻塞”以前(FireBug 的早期版本)被称为“排队”。这实际上意味着请求正在排队等待可用的连接。据我所知,Firefox 最新版本的默认持久连接数限制为 6,IE8 也限制为 6。之前只有 2。用户可以在浏览器设置中更改。
另外据我所知,在加载 javascript 文件时,所有其他资源(css、图像)都被阻止

于 2010-03-24T12:31:44.780 回答
5

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

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

异步活动(非阻塞)将简单地发出请求并让其他代码在请求发生在后台时运行。

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

于 2010-03-23T09:04:39.580 回答
4

As far as I know, two reasons cause components to cause blocking others from loading.

  1. Browser's enforced (but usually configurable) limit of how many parallel resources can be loaded from a particular host at a time.
  2. Inline javascript, which can cause the browser to wait and see if it at all needs to go ahead with downloading the rest of the components (just in case the javascript redirects or replaces the content of the page)
于 2010-08-09T21:23:22.063 回答
2

这意味着“等待连接”。正如Mozilla 官方文档中所解释的,“阻塞”是“在队列中等待网络连接所花费的时间”。这可能是由于 Firefox 达到了其内部并行连接限制,正如在此处和此处的答案中所解释的那样。

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

从技术意义上讲,这样的连接还没有建立,因为请求正在等待accept()来自服务器 []。也许这就是为什么它被 Firefox 归入“阻止”的原因,因为它也可以被认为是“在等待网络连接的队列中花费的时间”。

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

于 2017-02-19T12:53:50.973 回答