建立长期维护机制的关键,是把前端性能优化从一次性的“改版冲刺”变成有指标、有责任人、有触发条件、有回归验证的日常流程。它不依赖某个工具是否长期存在,而依赖你能否持续回答三个问题:当前基线是多少、什么变化会让它变差、变差后谁来处理。下面用一个假设的例子展开。
假设某内容型站点在三个月前做过一轮前端性能优化:压缩了图片、延迟加载了非首屏脚本、把首屏关键样式内联。上线时首屏渲染明显变快。三个月后,运营反馈页面“又变慢了”。排查发现:新增了三个第三方统计脚本、首页轮播图换成了未压缩的大图、某个组件库被整包引入。没有一次改动是“性能改动”,但每一次都在消耗之前的成果。
这个假设例子说明:性能回退很少来自一次大事故,多来自许多次无人拦截的小改动。长期维护机制要解决的正是这种“缓慢劣化”。
没有基线就谈不上维护。选择指标时要区分两类:
常见可纳入基线的项包括:首屏内容出现时间、最大内容绘制时间、交互响应延迟、主线程长任务数量、首屏传输字节数、请求数量。具体选哪几个,取决于你的页面类型:以阅读为主的内容页更关注首屏出现与布局稳定,以操作为主的应用页更关注交互响应。
基线要写成可执行的形式,例如“在限速环境下,首屏内容出现时间不超过 X 秒,首屏传输字节不超过 Y KB”。X 和 Y 由你自己测出的当前值加上合理余量决定,不要照搬外部数字。
维护机制如果要求团队额外做一套动作,通常坚持不下来。更现实的做法是挂到已有环节上:
常见错误是把阈值设得过严,导致每个正常改动都被拦下,团队很快开始“习惯性忽略告警”。阈值应允许正常波动,只拦截明确劣化。
不是所有改动都需要同等审查。可以按影响面分级:
判断结果只有三种:通过、需修改、需例外说明。例外说明要记录原因和复核时间,避免“临时例外”变成永久状态。
页面会变、依赖会变、访问设备分布也会变。建议按固定周期做一次复核,内容包括:基线指标是否仍合理、例外项是否还在、被延迟加载的资源是否真的不需要提前加载、已下线的功能是否还留着无用代码。
复核时容易犯的错是只看平均值。平均值可能掩盖一部分用户的糟糕体验,因此要同时看分布,例如较慢区间的占比。
先选一个你负责的页面,测出它当前的基线数值并写下来,再挑上面三个检查点中的一个,试着在下次改动时执行一次。跑通一个页面、一个检查点,比一次性设计一套完整制度更容易落地。