Skip to content

性能预算篇

定义关键操作的性能指标和优化目标


核心性能指标

加载性能

指标目标值测量方式
首次内容绘制 (FCP)< 1.5sLighthouse
最大内容绘制 (LCP)< 2.5sLighthouse
可交互时间 (TTI)< 3.5sLighthouse
首字节时间 (TTFB)< 600msLighthouse
累积布局偏移 (CLS)< 0.1Lighthouse

运行时性能

指标目标值说明
帧率 (FPS)60fps滚动/动画时
输入延迟< 100ms点击响应
长任务< 50ms单个 JS 任务
内存占用< 150MB正常使用时

操作性能预算

导航操作

操作目标时间说明
页面切换动画250-300msStackflow 过渡
Tab 切换< 100ms无动画情况
返回上一页< 150ms含动画
深度链接打开< 1s从外部唤起

钱包操作

操作目标时间说明
钱包列表加载< 100ms本地数据
单钱包余额显示< 200ms缓存命中
单钱包余额刷新< 2s网络请求
多链余额并行查询< 3s5 条链
交易历史加载< 1s首页(20条)

加密操作

操作目标时间说明
助记词生成< 100msBIP39
地址派生(单链)< 50msBIP44/Ed25519
地址派生(全链)< 500ms10 条链
图案验证< 500msPBKDF2
交易签名< 200ms单笔交易
助记词解密< 300msAES-GCM

表单操作

操作目标时间说明
输入响应< 16ms每次按键
验证反馈< 100ms字段级验证
表单提交< 50ms本地验证
地址解析< 200msENS/域名解析

扫码操作

操作目标时间说明
相机启动< 500ms首次打开
二维码识别< 100ms识别延迟
结果解析< 50msURL/地址解析

包体积预算

总体预算

资源类型预算 (gzip)说明
首屏 JS< 150KB关键路径
首屏 CSS< 30KB关键样式
总 JS< 400KB所有路由
总 CSS< 50KB所有样式
图片/图标< 100KB首屏资源

分包预算

预算 (gzip)触发条件
vendor (核心依赖)< 100KB首屏
framework< 50KB首屏
单路由 chunk< 30KB导航时
加密库< 80KB延迟加载
i18n 资源< 20KB/语言切换语言

依赖预算

依赖类别预算说明
UI 框架< 50KBReact 等
状态管理< 15KBTanStack 等
导航< 20KBStackflow 等
加密< 80KBnoble/scure
工具库< 30KB总计

内存预算

常驻内存

数据预算说明
应用基础< 30MB框架+组件
钱包数据< 5MB10 个钱包
缓存数据< 20MB余额+历史
UI 状态< 10MB组件状态
总计< 100MB正常使用

峰值内存

场景预算说明
交易签名< 150MB临时增加
大列表渲染< 130MB虚拟滚动
相机扫码< 180MB视频流

内存泄漏

  • MUST 页面卸载后释放所有订阅
  • MUST 组件卸载后清理定时器
  • MUST 大对象使用后置 null
  • SHOULD 定期检查内存增长

网络预算

请求数量

场景预算说明
首屏加载< 15资源请求
首页展示< 5API 请求
页面切换< 3数据请求

请求大小

请求类型预算说明
余额查询< 2KB单次响应
交易历史< 10KB20 条记录
链配置< 5KB全量配置

并发请求

场景最大并发说明
多链余额5限流保护
图片加载3资源加载
API 请求4总并发

动画性能

动画帧预算

时间用途
16ms一帧(60fps)
< 10msJS 执行
< 4ms渲染+合成
< 2ms余量

动画规范

动画类型实现方式说明
页面切换CSS transformGPU 加速
列表滚动原生滚动避免 JS 干预
按钮反馈CSS transition< 100ms
加载动画CSS animation避免 JS

禁止的动画模式

  • MUST NOT 动画中修改布局属性(width/height)
  • MUST NOT 动画中触发重排(offsetTop 等)
  • MUST NOT 使用 setInterval 做动画
  • SHOULD NOT 同时运行超过 3 个动画

性能监控

关键指标采集

指标采集频率上报
页面加载时间每次聚合上报
接口响应时间每次P95/P99
长任务检测到时即时上报
内存峰值每分钟超阈值上报

性能预警

指标预警阈值严重阈值
FCP> 2s> 3s
LCP> 3s> 5s
接口 P95> 3s> 5s
内存> 200MB> 300MB

优化策略

加载优化

策略说明
代码分割路由级别懒加载
资源预加载prefetch 下一页
图片优化WebP + 响应式
字体优化font-display: swap

运行时优化

策略说明
虚拟滚动长列表
防抖节流频繁操作
Web Worker密集计算
请求合并相似请求

缓存优化

策略说明
强缓存带 hash 的资源
协商缓存HTML 入口
本地缓存业务数据
内存缓存热点数据

性能测试

测试环境

设备类型配置说明
低端设备2GB RAM, 慢 4G最低基准
中端设备4GB RAM, 4G主要目标
高端设备8GB RAM, WiFi理想体验

测试场景

场景验证点
冷启动FCP < 1.5s
热启动TTI < 1s
10 个钱包列表流畅
100 条交易滚动 60fps
弱网环境超时处理正确

本章小结

  • 所有关键操作都有明确的性能预算
  • 包体积、内存、网络分别设定预算
  • 动画必须保持 60fps
  • 建立性能监控和预警机制
  • 针对低端设备优化

Released under the MIT License.