Firefox 什么是';阻塞';在Firebug网络面板中?

Firefox 什么是';阻塞';在Firebug网络面板中?,firefox,firebug,blocking,Firefox,Firebug,Blocking,我使用的是Firebug 1.5.2,在产品发布前测试站点时,我可以看到“阻止”部分请求所消耗的大量时间 “阻塞”的确切含义是什么?阻塞是一个术语,用于描述停止其他事件或代码(在同一线程内)处理的事件 例如,如果您使用“阻塞”套接字,那么发出套接字请求后的代码将不会被处理,直到请求完成(在同一线程内) 异步活动(非阻塞)只需发出请求并让其他代码在请求发生在后台时运行 在您的情况下,这基本上意味着firebug/浏览器的某些部分在其他部分完成之前无法激活。也就是说,在下载更多之前,它正在等待图像下

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


“阻塞”的确切含义是什么?

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

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

异步活动(非阻塞)只需发出请求并让其他代码在请求发生在后台时运行

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

以前的“阻塞”(FireBug的早期版本)称为“排队”。这实际上意味着请求正在队列中等待可用的连接。据我所知,在Firefox的最新版本中,默认情况下持久连接的数量限制为6,IE8也是6。早些时候只有2个。它可以由用户在浏览器设置中更改。

另外,据我所知,在加载javascript文件时,所有其他资源(css、图像)都会被阻止

据我所知,有两个原因会导致组件阻止其他资源加载

  • 浏览器强制(但通常可配置)限制一次可以从特定主机加载多少并行资源
  • 内联javascript,这会导致浏览器等待并查看是否需要继续下载其余组件(以防javascript重定向或替换页面内容)
  • 它的意思是“等待连接”。正如官方解释,“阻塞”是指“在队列中等待网络连接的时间”。这可能是由于Firefox达到了其内部并行连接限制,如此处和此处的答案所述

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

    从技术意义上讲,由于请求正在等待服务器[]发出的
    accept()
    ,因此这种连接尚未建立。也许这就是为什么它被Firefox归为“阻塞”的原因,因为它也可以被视为“在队列中等待网络连接的时间”


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

    是否可以设置Apache服务器以消除此类阻塞问题?我确信服务器可以做到这一点,因为几乎所有IIS站点都没有这样的阻塞延迟,但“干净”的apache安装可以做到这一点……我想补充一点,这就是为什么您应该最后加载javaScript文件(如果可能的话)。如果用户不必等待CSS或图像加载,那么页面的加载速度似乎要快得多。