当 Chrome 警报到达服务工作人员时,重新加载会触发 - 而不是当页面内的脚本恰好处于唤醒状态时。
选项卡休眠、丢弃以及因内存压力而被丢弃。弹出窗口关闭。页面计时器随文档一起终止。 Auto Refresh Turbo 将时间表保存在扩展服务工作线程中,并在警报触发时调用 tabs.reload,这就是倒计时可以比弹出窗口更长久的原因。
时间线中的演员
- Service Worker - 拥有会话状态和下一个警报
- chrome.alarms — 在预定的时间点唤醒工作线程
- tabs.reload — 对该选项卡 ID 执行正常或硬重新加载
- 弹出窗口/徽章/可选的页面芯片 - 剩余时间视图;不是权威
深层产品路径:自动选项卡刷新的工作原理。
单个周期
- 您按“开始”键时会出现一个选项卡的间隔(固定或随机)
- 工作人员存储会话并准备下一个警报
- 界面显示剩余时间
- 警报响起 → Chrome 重新加载选项卡
- 如果会话继续,则准备下一个延迟
- 计划规则、N 后停止、交互停止或可疑页面停止可能会暂停或结束循环
当选项卡位于后台时
后台选项卡可以针对页面 JavaScript 进行限制。这是仅内容脚本计时器是弱核心循环的原因之一。警报 + 工作调度旨在使重新加载尝试与您的时间间隔保持一致,即使页面未聚焦 - 受 Chrome 自己的扩展和电源策略的约束。
废弃和冻结的标签页
Chrome 可能会丢弃选项卡以释放内存。如果会话仍然有效,稍后重新加载仍以选项卡 ID 为目标;该文档是最新加载的。如果选项卡完全关闭,则该会话应该结束 - 关闭的选项卡不是沉默的僵尸。
服务工作线程重新启动
工人们可以睡觉了。本地存储中的持久快照有助于在重新启动后重建会话。存储该恢复路径的 URL 和间隔,而不是构建浏览历史记录产品。请参阅隐私政策。
关闭弹出窗口不会停止会话:工作人员保持警报,重新打开弹出窗口应再次显示剩余时间。当您想要结束刷新时,请按“停止”。
安排窗口和时钟
在每日窗口之外,会话将暂停:在窗口打开之前,警报不应重新加载。那不是停止。阐明计划暂停与停止和每日计划中的状态。
重新加载后,UI 重新安装
完全重新加载会创建一个新文档。可选的可视计时器重新安装并与工作人员重新同步。早期注入可保持较短的间隙;工人仍然决定下次开火时间。
什么可以阻止火
- 安排暂停
- 停止/N后停止
- 点击/键入时停止
- 可疑页面停止
- 缺少权限或不可重新加载的网址方案
演练:故障排除。
多标签计时
每个选项卡会话都有自己的警报和选项。五个选项卡意味着五个独立的生命周期 - 对墙很有用,如果您不小心,很容易使单个源超载(速率限制)。
尝试一下
安装 Auto Refresh Turbo,启动 30 秒的会话,关闭弹出窗口,并确认标签页仍按计划重新加载。