gpt4 book ai didi

javascript - 当所有者不在焦点时网络 worker 做什么?

转载 作者:行者123 更新时间:2023-11-29 19:13:39 24 4
gpt4 key购买 nike

[编辑:这个问题可能需要缩小范围,所以当我注意到这个问题时,我会声明我目前使用默认设置的 Chrome 49.0.2623.112 m(64 位)。我目前正在使用 HTTPS,但我在切换之前观察到了它。]

我有一个将 AJAX 轮询交给网络 worker 的应用程序。就性能而言,这并不是令人难以置信的节省,但它使应用程序更容易推理,并有可能在未来获得性能优势。

我向工作人员添加了一条控制台日志记录行,以便它在每次发出 XHR 请求时都告诉我。您可能知道,当重复的日志行进入 Chrome 时,Inspector 只会记录重复的数量。

当我查看页面时,我可以在控制台中看到:(52) XHR invoked

如果我的页面处于焦点状态,根据我的轮询间隔,我会看到该整数每 2 秒增加一次。

但是,

当我切换到另一个选项卡一段时间然后返回时,该数字需要几秒钟才能更新,此时它只会更新一个。这可能是因为 worker 实际上正在暂停,这在这个特定的应用程序中很好,或者可能是 worker 仍在运行,但如果父级不可见,控制台 API 无法从 worker 接收日志行.不确定。

但我要解决的重要问题是返回选项卡时的延迟。如果它是一个响应式更新的仪表板,在更新继续之前有 10-60 秒的延迟是显而易见的,这是一个 UI 性能错误。

任何人都可以深入了解所有者选项卡失去焦点时 Web Worker 会发生什么情况吗?它实际上是在排队每个需要完成的工作实例(在 XHR 消息上),然后在所有者回来时执行它吗?

在失去焦点时手动暂停轮询机制会有帮助吗?

最佳答案

此行为因浏览器而异。如果不使用该选项卡,它们中的大多数将降低 JavaScript 优先级以保留 CPU 周期和性能开销。我相信有些浏览器会完全暂停选项卡的执行,所以是的,这将是一个暂停,直到重新聚焦。我认为 Firefox 有一个选项可以控制它。

关于javascript - 当所有者不在焦点时网络 worker 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com