资讯文章 资讯 · NEWS
发版前后比一比:目录站的性能回归门禁该怎么搭
2026-10-23 约 1,285 字 预计阅读 3 分钟 yiyunkj
发
每个站都做过一次性能优化。做完那周数据很好看,三个月后回头测,指标又回到优化前了——中间发过十几次版,没人知道是哪一次改回去的。
原因是优化是一次性的,而发版是持续的。只要没有一道自动判定,退化就是必然。这道判定就是性能回归门禁。

图片来源:网络,版权归原作者所有,侵权请联系删除
选样本页,不要全站跑
| 样本 | 代表什么 | 为什么选它 |
|---|---|---|
| 首页 | 链接密度最高的页面 | DOM 和图片最多,最容易退化 |
| 一个大分类页 | 列表渲染 | 条目数一变,渲染开销立刻体现 |
| 一个条目详情页 | 最常见的页面类型 | 占全站流量大头 |
| 一个带图多的页面 | 图片加载策略 | 懒加载、尺寸配置错了这里先暴露 |
四到六张样本页够用。选太多,跑一轮要很久,门禁就会被人想办法绕过去;选太少,覆盖面不够。关键是这几张要固定下来,别每次发版换一批,那样前后没有可比性。
样本页的选择标准只有一个:哪类页面出问题影响最大,就选它。首页永远在列,剩下几个按你站的流量结构挑。
测几次,取什么值
实验室数据有波动,这是门禁误报的最大来源。同一张页面连续测三次,结果能差出百分之十几,如果阈值卡得紧,就会一会通过一会不通过。
做法是每次跑三到五遍,取中位数而不是平均值——中位数能挡掉偶尔一次的异常慢,平均值会被它拉偏。另外跑之前要预热一次,第一次访问往往带着冷启动的开销。
还有一件容易被忽略的事:把实验环境的噪声降到最低。在 CI 里跑的话,机器的负载会变,最好固定一台机器或者固定一个容器规格,并且把跑测的时间避开构建高峰期。
阈值怎么定
两条路。绝对值阈值,比如最大内容绘制不超过 2.5 秒、累计布局偏移不超过 0.1,好处是直观,坏处是和站点实际情况脱节,一旦基线本身就偏高,门禁会一直红,最后被人关掉。
更实用的是相对基线:以当前线上值为基线,允许上浮一定比例。比如单次发版允许劣化 5%,超过就告警。这样既不会天天报红,也能挡住那种一次加进去 300KB 脚本的大退步。
两种可以一起用。相对基线作为门禁的判定条件,绝对阈值作为长期目标单独出报告,达标了再收紧基线。要求一次到位,只会让门禁形同虚设。
超标之后:拦还是记
这是门禁能不能活下去的关键。直接拦住发版听起来很硬,实际上很快就会被绕过——总有个紧急修复要走,开了口子之后口子就越来越大。
比较可行的分档是:劣化超过 15% 直接阻断,必须修或者显式走审批;5% 到 15% 之间只告警不阻断,由负责人决定;5% 以内记录进趋势图,不打扰任何人。
审批这个出口要留着,但要留痕。谁批的、为什么批、打算什么时候补回来,都记下来。三个月后看这份记录,能看出这个团队到底重不重视性能。
和线上数据对一下
实验室数据是同条件下的对比,反映的是代码变化;线上数据(比如 CrUX 那类真实用户数据)是 28 天滚动的统计,反映的是真实体验。两者口径不同,偶尔不一致是正常的。
门禁判断用实验室数据,因为它对单次发版敏感;长期趋势看线上数据,因为它不会被 CI 环境干扰。别指望两者数字对得上,能对上趋势方向就够了。
最后一句
门禁的价值不在于它拦住了多少次发版,而在于它让「这次改动会让页面变慢多少」变成一个发版前就知道的数。有了这个数,讨论就从「我觉得不会慢」变成「慢了 8%,可以接受」。