【发布时间】:2014-10-18 19:30:18
【问题描述】:
我知道在浏览器中一次可以发生的并发 http 连接数是有限制的......
这是一个总的、总体的浏览器限制吗?网络工作者是否也受到此限制,还是因为它们是不同的线程而受到不同的对待?
【问题讨论】:
-
请参阅browserscope.org/?category=network 了解浏览器连接限制。
-
所以这个页面建议每个 hostname 有 X 个连接的限制,最大 browser 限制为 Y.. 假设一个网络工作者被认为与生成它的应用程序位于同一 hostname 下,我是否正确地说 web worker 与应用程序的其余部分一起受到主机名限制?因此,如果我有 X 个网络工作者都使用 XHR 请求,那么我仍然可以阻止 UI 吗?
-
@mpickell 你不能用 WebWorker 线程阻塞 UI 线程(这就是他们的重点)。但是,是的,您可以通过让
XWebWorkers 将 XHR 发送到同一主机 并 尝试从主 UI 线程进行同步 XHR 来阻止 UI 线程(永远不应该这样做)。另请注意,第一部分甚至不是必需的,您可以通过从主线程进行任何同步 XHR 来阻塞 UI 线程。 -
@idbehold 网络工作者计入最大浏览器连接限制(或主机名限制),对吗?我正在创建一个 Web 工作者,它进行 XHR 异步调用以获取一些数据、处理它并将结果返回给 UI 线程。我正在创建该工作人员的实例的 pool 并且可以将池设置为我想要的任意数量...但我不希望网络工作人员获取所有可能的连接并最终阻止需要建立 XHR 连接的 UI。
-
(空间不足..)我的理解是,一旦连接全部使用,任何其他尝试获取 http 连接的东西都会阻塞调用线程,直到连接可用。因此,为了将我的工作池设置为正确的数字,我试图弄清楚是否计入总连接数......我还没有遇到实际阻塞 UI 的问题,并且池数可以配置..但我试图更好地理解它。我不希望 UI XHR 在所有工作人员结束时排队并最终被阻止。
标签: javascript xmlhttprequest web-worker