Skip to content

perf(workspace): unmount loading skeletons for inactive background tabs - #1061

Open
bet4it wants to merge 1 commit into
poco-ai:mainfrom
bet4it:perf/unmount-inactive-tab-skeletons
Open

bet4it wants to merge 1 commit into
poco-ai:mainfrom
bet4it:perf/unmount-inactive-tab-skeletons

Conversation

@bet4it

@bet4it bet4it commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

摘要

解决 #1049 中反映的空闲状态持续 10%~20% CPU 占用问题:对工作区非活跃且未保活的后台标签页卸载骨架屏,避免后台运行大量持续的 CSS keyframe 动画。

Addresses #1049

类型

  • feat:新功能
  • fix:修复
  • ui:界面
  • refactor
  • docs
  • chore / ci / test

场景

  • 问题:在工作区恢复较多历史标签页时,未激活且未水合的后台标签页(!tab.loaded)以及被 LRU 换出的 Markdown 标签页,会在后台渲染 <TabLoadingSkeleton />。
  • 影响:每个骨架屏包含多个带有 .library-shimmer(background-position 无限平移)的元素。因为 Dockview 采用 DOM 保活(renderer: 'always'),多标签下会有数百个不可见元素在后台以 60 FPS 驱动主线程 CSS 动画与重绘,导致 WebKitWebProcess 在静止状态下持续占用 10%~20%+ CPU(建议优化在Linux/CachyOS上的性能 #1049)。
  • 解法:在 src/components/workspace/doc-view.tsx 中为 !tab.loaded、texCompiling 和 markdown 分支增加 !active && !keepMounted 判断,处于后台时直接返回 null(与其他 PDF / Text / HTML 视图策略一致),仅在前台需要显示加载时才挂载骨架屏,内容加载完毕即销毁。

截图(UI / 功能改动必填)

解决 #1049 的性能问题(静止状态 CPU 占用由 ~20% 降至 0%)。本次改动为后台 Tab 渲染门控优化,前台视觉布局无变化。

Demo(feat 必填)

不适用

自查清单

  • 本地 pre-commit 通过(未使用 --no-verify)
  • 已运行与改动对应的检查:前端 pnpm lint / pnpm typecheck / pnpm test;Rust cargo fmt --check / cargo clippy / cargo test
  • CI 全绿
  • UI 文案已走 t() 并同步 zh-CN 翻译(如涉及文案)
  • 相关文档已更新(如涉及已实现功能)
  • 手动验证:pidstat 采样验证 WebKitWebProcess 静止 CPU 由 25.3% 降至 0.00%,DOM 活跃动画数由 488 降至 0。

Unmount placeholder skeletons in inactive background tabs to avoid hundreds of continuous CSS keyframe animations running at idle.

Addresses poco-ai#1049
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant