Skip to content

perf(webui): Lighthouse 90→97 性能优化 + Bug 修复#9

Merged
massif-01 merged 3 commits intoRMinte:mainfrom
massif-01:main
Feb 10, 2026
Merged

perf(webui): Lighthouse 90→97 性能优化 + Bug 修复#9
massif-01 merged 3 commits intoRMinte:mainfrom
massif-01:main

Conversation

@massif-01
Copy link
Collaborator

Summary

WebUI 性能大幅优化,Lighthouse Performance 评分从 90 提升至 97,首次加载资源体积从 ~1.6MB 降至 ~250KB(压缩率 84%),同时修复了多个功能 Bug。

构建时优化

  • Minify + Gzip 构建流水线CMakeLists.txt 新增三步构建流程(复制→Python 压缩→gzip),所有优化在构建目录中进行,不修改源文件
  • 纯 Python 压缩脚本 (tools/minify_web.py):JS 移除注释/空白 + CSS 压缩 + gzip 预压缩,无 Node.js 依赖

服务端优化

  • gzip 透明压缩ts_http_server.c 检测 Accept-Encoding: gzip,自动发送 .gz 预压缩文件
  • HTTP 缓存:静态资源 Cache-Control: public, max-age=604800, immutable(7天),index.html 设为 no-cache

前端加载优化

  • JS 脚本添加 defer,消除渲染阻塞
  • 语言包动态加载:仅加载当前语言,切换时按需加载另一个(节省 ~130KB)
  • xterm.js 延迟加载:从 <head> 移除,首次打开终端页面时从 CDN 按需加载(节省 ~70KB)
  • 首屏关键 CSS 内联 + 主 CSS 异步 preload 加载

压缩效果

资源 原始大小 优化后 (gzip) 压缩率
app.js 997KB 146KB 85%
style.css 161KB 19KB 88%
语言包 (x2) 274KB 67KB 76%
合计 ~1.6MB ~250KB 84%

Bug 修复

  • CPU 监控 0%ts_api_system.c 改用 delta 算法计算瞬时 CPU 使用率
  • 风扇曲线不自动调速ts_fan.c 切换模式时重置迟滞状态
  • 中文界面 SSH 文本显示英文zh-CN.js 翻译 key 命名空间修正
  • 全站 emoji 残留:清除 29+ 处可见 emoji

Test plan

  • idf.py build 编译通过
  • 烧录后 Lighthouse 测试 Performance = 97
  • 验证 gzip 响应(检查 Content-Encoding: gzip 头)
  • 验证缓存生效(检查 Cache-Control 头)
  • 终端页面 xterm.js 按需加载正常
  • 语言切换功能正常(动态加载)
  • CPU 监控显示实时使用率
  • 风扇曲线模式切换后自动调速

构建时优化:
- CMakeLists.txt: 新增 minify+gzip 构建流水线(源文件→复制→Python压缩→gzip→SPIFFS)
- tools/minify_web.py: 纯 Python JS/CSS 压缩+gzip 脚本,无 Node.js 依赖
- 总资源体积从 ~1.6MB 降至 ~250KB(压缩率 84%)

服务端优化:
- ts_http_server.c: 支持 gzip 预压缩文件发送(Accept-Encoding 检测)
- ts_http_server.c: 静态资源 Cache-Control 7天长期缓存,index.html no-cache
- 新增 font/woff2、font/woff Content-Type

前端加载优化:
- index.html: JS 脚本添加 defer,消除渲染阻塞
- index.html: 语言包动态加载(仅加载当前语言,切换时按需加载)
- index.html: 首屏关键 CSS 内联 + 主 CSS 异步 preload
- terminal.js: xterm.js 从 <head> 移除,改为首次打开终端时按需加载

Bug 修复:
- ts_api_system.c: CPU 监控改用 delta 算法,修复始终显示 0% 的问题
- ts_fan.c: 风扇曲线模式切换时重置迟滞状态,修复不自动调速
- zh-CN.js: SSH 翻译 key 迁移到正确命名空间,修复中文界面显示英文
- zh-CN.js/en-US.js/app.js: 清除全站残留 emoji(29+ 处)

文档:
- README/README_EN: 添加 Lighthouse 97 徽章
- frontend_modification.md: 记录 v77 性能优化详情
@massif-01 massif-01 merged commit 9fd6ea5 into RMinte:main Feb 10, 2026
2 checks passed
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