当计算机锁定或窗口不在前台时,chrome 浏览器的行为会有所不同吗?我注意到在 Windows 上,在这种情况下页面加载速度较慢。
如果可以的话,可以通过任何标志来禁用此功能吗?
答案1
答案很简单,不会。当计算机被锁定或浏览器未全屏时,Google Chrome 的行为不会有所不同。
稍微长一点的答案是,当屏幕锁定时,用户仍然处于登录状态,并且所有用户应用程序继续正常运行,但在用户桌面而不是安全桌面上。所有绘制事件都被短路,以避免浪费 CPU 绘制不会显示的帧,但 Google Chrome 不会看到其他任何事情发生。
在后台运行的另一个特性是,当线程不在前台时,它们会获得更小的时间片 - 这是 Windows 中的一个故意的特性,因为前台线程的速度下降 5% 会使系统看起来很慢,而后台进程的速度下降 5% 通常是不可察觉的。
在 Windows 中,同样的原则也适用于网络和磁盘延迟。前台线程优先处理排队的网络操作,因此如果 30 个线程都想进行 DNS 查找(如果您在 Chrome 中打开大量新标签,很可能就会出现这种情况),那么最先发生的就是您正在查看的标签的查找。
所有这些因素的结合意味着,当 Google Chrome 不在前台(例如因为其他东西在前台,或者机器被锁定)并且系统中正在发生其他事情时,Google Chrome 的性能可能不如在前台时好。
但归根结底,这是 Windows 的聪明做法,试图让您的用户体验不那么迟缓,而不是 Google Chrome 做了什么不同的事情。
答案2
是的,Chrome 确实为后台标签设置了较低的优先级。
如果整个窗口处于后台,则所有选项卡也将处于后台。选项卡上的 JavaScript 仅每 1 或 2 秒处理一次(我不记得是哪一次)。此延迟被硬编码在 Chromium 源代码中的常量中。您需要重新编译 Chromium 以赋予后台选项卡更高的优先级。
我知道,因为我调查过。我想让 JavaScript 在后台运行,每隔几百毫秒触发一次,但标签在后台运行一段时间后,计时器每 1 或 2 秒仅触发一次。