实验日志
1. 会员管理 Excel 按需加载
- 假设:列表首次显示不需要
xlsx;把库延后至下载模板或读取导入文件,首次 JS 至少减少约 429 KB,真实列表 p75 随之下降。
- 改动:
operations-users.component.ts 的两处 Excel 操作改用动态导入,并保留错误反馈。
- 配对结果:首次 JS 908831 → 479783 字节;真正可用 p75 2386.3 → 1885.5 ms,下降 21.0%。保留。
2. 其他导出库按需加载
- 假设:学习报表列表不需要 PDF 引擎;工资结算、词库和抗遗忘工资列表不需要 Excel 引擎。
- 改动:只在相应下载、导入或导出操作中加载
html2pdf.js 或 xlsx。
- 学习报表配对结果:首次 JS 1169844 → 477352 字节;真正可用 p75 2886.8 → 1883.2 ms,下降 34.8%。保留。
- 工资结算和词库的前端导入链已改变,但没有单独取得真实可用耗时,不给它们填写耗时降幅。
两次实验都符合“代理指标下降、列表真正可用耗时也下降”。耗时受浏览器与测量机负载影响,JS 字节阈值用作回退检查,p75 仅用于本次配对结论。
3. 运营菜单后台预热
- 假设:各页面已按路由拆包;第一次点击侧栏时仍要下载和解析目标页面代码。当前页面稳定后预热九个运营主菜单路由,能缩短首次切入等待。
- 改动:仅认证会话的运营菜单在路由结束 3 秒后预加载。省流量或 2G 网络不预热;不预取业务数据、详情页、技术后台或导出库。
- 代理指标:固定模拟接口、本地 Fast 4G、1440×900、先在工作台静置 4.5 秒,再首次点击六个目标菜单。配对 10 轮,六个模块 p75 均下降 50.2%–70.8%。
- 限制:这里计到目标页面标题出现。门店、排课、陪练、工资和专项训练的数据可用时间仍取决于其接口,不能把标题时间当作业务可用时间。
- 回退检查:会员与学习报表的真正可用 p75 变化分别是 1891.1→1891.3 ms、1877.7→1881.5 ms;初始 JS 约增加 4.4 KB,仍低于 500 KB 门槛。
4. 词库首屏并发请求
- 假设:默认查看全部词条时,目录与第一页词条互不依赖,串行等待会增加一个接口往返。
- 改动:同时请求目录与第一页,分别保留成功结果和错误提示;已有单元测试增加了并发启动断言。
- 真正可用 p75:1572.5→1389.5 ms,下降 11.6%,配对 10 轮。首屏 JS 468594→473393 字节,仍低于 500 KB 门槛。
5. 工作台实际可用和回访
- 首次登录后并行取得工作台数据、预热路由代码;同会话请求合并,保留成功快照。工作台摘要的云端快速路径移除当前页面用不到的工资批次、评价奖励查询,云端改动尚未部署。
- 固定 1.2 秒工作台接口的配对 10 轮:登录到内容与图表可用 p75 2389.8→1872.8 ms;直接冷开 p75 2403.3→2397.4 ms;离开再返回 p75 1326.1→60.5 ms,摘要请求 2→1。
- 快照当日且不满 30 秒可直接恢复;超过 30 秒继续显示旧数据并后台更新,错误时不清空内容。
6. 九个运营主菜单页面复用
- 假设:同会话内反复打开菜单不应重新创建组件,也不应重发整页业务请求。保留已加载页面实例,恢复其筛选、分页和视图状态。
- 当前页面每 5 秒轻量检查版本;离开后停止检查,返回时立即补查。版本变化时才刷新。工作台跨日或快照超过 30 秒时后台刷新;内容页保留现有手动刷新。
- 固定本地网关 A/B 交替各 10 轮:九页的重复业务请求全部归零;工作台返回内容 p75 845.0→58.6 ms,其他页返回可见 p75 48.9–58.0 ms。10 轮浏览器脚本错误均为零。
perf/bench/admin-menu-return.py 记录原始数据并检查返回导航 p75 不超过 150 ms、重复业务请求为零。页面标题/实例时间只是导航代理;除工作台外未声称业务内容可用 p75 的降幅。