《tab-keepalive.md》修订附录 2026-10-19

原报告 · 核对基线 commit eac3717 · 总评审:DCU_DesktopController_专家评审_2026-10-19.html
原报告:Tab Keep-Alive(多 iframe 常驻)
时间线:status: delivered,2026-09-16(eaafee1 / be26f4d)
原结论概要:tabs.html 一标签一懒创建 iframe,visibility 切换不销毁文档;注入的 F5/⟳ 只刷新激活帧;明确不做后台降频。

原文件保持不变;本附录逐条记录其结论在当前代码中的状态。

逐条结论跟踪

编号原结论 / 建议当前状态证据(文件:行号)备注
TK-1多 iframe 宿主 + visibility 切换已修复(已交付)tabs.html:70-81, 100, 113
TK-2F5/⟳ 只 reload .page-frame.active已修复(已交付)esp32_server.py:126, 150, 166
TK-3不做后台页降频(Out of Scope)仍存在风险tabs.html:76-81; js/common/polling.js:350-352隐藏帧持续轮询挤占设备 6 个 socket(C-13);电机页发送节拍在后台被节流(M-10)——建议重新评估此决策

相关新问题(详见总评审)

严重 [M-10] 周期发送与序列计时在后台标签被节流,且无可见性处理

模块
电机控制/故障保护
位置
js/motor/main.js:2488; js/motor/seq.js:503
现象
周期发送用主线程 setInterval,序列保持用 setTimeout;隐藏 iframe/最小化后被浏览器降到 ≥1 s 乃至分钟级。只有状态轮询走 Worker。无 visibilitychange 停止/告警;WiFi 链路关窗时无停机。
风险
后台时控制节拍严重失真,序列时间轴不可预测。
修改建议
发送节拍迁入 tick.worker.js;visibilitychange 时提示或按策略安全停机;pagehide 时对 WiFi 也发停机(sendBeacon)。

一般 [C-13] 对设备的并发轮询过多

模块
CAN/公共层
位置
js/common/device-link.js:30; js/can.js:131, 424; js/can_monitor.js:487, 490; tabs.html:76-81; js/common/polling.js:350-352
现象
/system/status 被 Owner(1 Hz)、OTA 页(1 Hz)、can.js(5 s)、can_monitor(5 s) 同时轮询;/can/feedback 被抽屉与独立监控页各 1 Hz;隐藏 iframe 继续轮询,无可见性暂停与离线退避。README 称设备 httpd 仅 6 个 socket 且 lru_purge。
风险
连接被挤占驱逐,业务请求失败。
修改建议
状态统一由 Owner 广播;隐藏页暂停;离线指数退避。

结论

共 3 条:已修复 2、部分修复 0、仍存在/存疑 1、已过时 0、无法在本仓库核实 0。