在主线程中如果使用 fetch 发起请求,一般有 6 个或者是 10 个的并发请求限制。而 worker 也是可以发起 fetch 请求的,请问一下浏览器是否会对一个主线程中创建的 worker 线程有个数限制还有一个 worker 线程中是否对发起的 fetch 请求也有类似的并发限制?
在主线程中如果使用 fetch 发起请求,一般有 6 个或者是 10 个的并发请求限制。而 worker 也是可以发起 fetch 请求的,请问一下浏览器是否会对一个主线程中创建的 worker 线程有个数限制还有一个 worker 线程中是否对发起的 fetch 请求也有类似的并发限制?
浏览器对 worker 发起的请求确实有一些限制。
首先,关于 worker 的数量限制,不同的浏览器可能会有不同的限制。例如,Chrome 允许每个域最多有 250 个 worker。但是,这个限制并不是绝对的,因为浏览器可能会根据系统的可用资源和其他因素进行调整。
其次,关于 worker 中 fetch 请求的并发限制,与主线程中使用 fetch 类似,worker 中也存在类似的并发限制。大多数现代浏览器默认允许每个域名有 6-8 个并发 TCP 连接。这意味着,如果一个 worker 线程尝试同时发起超过这个数量的请求到同一域名,这些请求可能会被排队等待,直到其他请求完成。
但是,请注意,worker 中的并发请求限制并不总是与主线程中的限制相同。这是因为 worker 运行在独立的线程中,它们有自己的事件循环和消息队列。因此,尽管存在类似的限制,但 worker 中的并发请求可能会受到不同的限制和调度策略的影响。
总之,为了确保最佳性能和避免潜在的限制问题,建议在使用 worker 和 fetch 请求时仔细规划和监控您的代码。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
http2 就没请求阻塞的问题了。
http1.1 worker 、iframe、主线程都是会阻塞的