现状
web/src/views/NodeDetailView.vue:122-129 使用 5 秒 REST 轮询获取节点详情:
const pollInterval = setInterval(async () => {
await fetchNodeDetail();
}, 5000);
这与 dashboard 的 WebSocket 实时推送是双轨架构:
- Dashboard 通过 WS 接收
NodeUpsert 实时更新
- 详情页绕开 WS,独立轮询 REST API
影响
- 浪费 HTTP 请求(每个打开的详情页 12 req/min)
- 数据不一致窗口:WS 推送与 REST 轮询之间最多 5s 延迟
- 架构不统一,增加维护复杂度
建议
详情页改为 WS 实时 + REST 补历史:
- 订阅 nodes store,从
NodeUpsert 消息实时获取 snapshot/latency/online
- REST 仅用于首次加载 + 补充历史数据(history endpoint)
- 删除 5s 轮询逻辑
验收
来源
现状
web/src/views/NodeDetailView.vue:122-129使用 5 秒 REST 轮询获取节点详情:这与 dashboard 的 WebSocket 实时推送是双轨架构:
NodeUpsert实时更新影响
建议
详情页改为 WS 实时 + REST 补历史:
NodeUpsert消息实时获取 snapshot/latency/online验收
NodeUpsert获取setInterval轮询来源
report/project-report-2026-06-11.md性能瓶颈 [P1][stability] issue_node 缺进程间文件锁;tmp 文件名固定 #5