首页 > 解决方案 > Chromium 的“Throttle Javascript timers in background”功能是什么以及如何处理它?

问题描述

从 Chromium 86 版开始,添加了一个名为“Throttle Javascript timers in background”的新实验功能,以解决 Chromium 浏览器的高电池消耗问题。

描述说:

在顶部窗口已隐藏 5 分钟的窗口中,计时器可以运行:

  • 每隔 1 分钟对齐一次,或者,
  • 如果窗口与顶部窗口同源,则在最后一个计时器在树中与顶部窗口同源的任何窗口中运行后 > 1 分钟。

在后台运行时间少于 5 分钟的页面中,保留现有的以 1 秒间隔对齐来自计时器的唤醒的策略。

他们指的是 DOM 函数setTimeoutsetInterval?在这些情况下究竟是如何处理的?

我想setInterval每 5 秒有一个,一旦标签被隐藏 5 分钟,它就会被修改为 60 秒。执行相同的setTimeout操作可能会导致许多作业在返回选项卡时同时运行。跳过这些可能会破坏逻辑,因此简单的作业队列可能会导致网站出现其他问题。

那么,该功能究竟是如何工作的呢?而且,开发人员如何确保在节流处于活动状态时他们的逻辑不会中断?

标签: javascriptchromium

解决方案


这就是它在锡上所说的:背景和隐藏选项卡不会以高频率运行 JS 计时器。允许的最短时间间隔变成一整分钟,这样您的页面就不会因为代码执行甚至没人看的事情而耗尽人们的电池。

解决方案是编写适当的页面逻辑,并且在没有人查看时根本不运行任何代码。这意味着您的页面有一个blurfocus处理程序,以便您的代码可以停止和恢复需要在超时或间隔上运行的事情。毕竟:如果没有人在看,你的页面“需要”什么都不做,因为不需要整个页面。


推荐阅读