先给判断:空值通常表示“这条记录没有可用的测量结果”,零值通常表示“测到了,结果就是零”。在旧内容、旧系统或旧合作关系退场时,这个区别直接决定一个指标该被继承、迁移还是丢弃。若把零值当成空值,你会误删仍然有效的基线;若把空值当成零值,你会把“没测到”写成“已经归零”,后续判断全部失真。
同一个速度工具报告里,空值和零值可能来自完全不同的层。前端采集层返回空值,常见原因是脚本未执行、页面被拦截、样本被过滤;服务端聚合层返回零值,常见原因是该时段确实没有超过阈值的请求,或该指标本身被定义为零。两种情况的处理方向相反:前者要补采集,后者要确认口径后保留。
可以按下面的顺序核对,而不是直接对数字做替换:
这一步的实际动作是:在退场清单里为每个字段标注“缺测”或“真实零”,而不是统一填零或统一删除。标注完成后,下一步的迁移范围才有依据。
当旧系统只是部分退出、仍有页面或接口继续服务时,处理原则是保留可复现的测量。零值属于可复现的测量结果,应当随旧记录一起迁移或归档;空值属于缺失,不应被写成零后混入基线。
假设一个旧版页面在退场前最后一次报告中,首屏渲染时间字段为空,而请求数、传输字节等字段为零。这里的合理解释可能是:该页面已被重定向,采集脚本没有机会执行,所以时间字段缺测;而请求计数确实为零,因为没有任何真实访问落到该地址。把时间字段补成零,会让后续对比误以为该页面曾经“瞬间加载”,从而错误地把它当作可继承的基线。
对应的实施动作是:对空值字段单独建一张缺测表,记录缺失原因和可用的替代来源;对零值字段直接进入归档。这个动作的结果是,退场评估时你能明确说出哪些指标有历史依据、哪些没有,从而决定是否需要用新页面的数据重新建立基线。
当旧系统不再产生新数据、只用于历史比对时,处理原则从“继承”变成“冻结”。此时不要急着清洗,先把原始返回原样保存,再在派生层做区分。原因是:一旦原始记录被改写,后续任何解释都失去证据。
冻结之后再做一次分类核对:
这一步的实际动作是生成一份“可解释 / 不可解释”清单。只有可解释的部分才进入历史比对;不可解释的部分保留原样,等待更多证据。这个动作的结果是,你不会因为一次采集异常就推翻整段历史基线。
退场场景里最常见的误判,是把某个指标连续为零直接当成“该指标已经废弃”。零值也可能来自口径收紧,例如只统计超过某个阈值的慢请求,低于阈值的请求不再计入,于是结果长期为零。这种情况下指标本身仍然有效,只是适用范围变窄。
区分方法是看同一工具里是否存在与之配对的字段。如果存在“总请求数”且它不为零,而“慢请求数”为零,那么更合理的解释是阈值口径变化,而不是采集失败。此时应当保留该指标,并在迁移说明里写清阈值条件,而不是把它从退场清单中删除。
最终要回答的不是“空值和零值哪个更严重”,而是“这条记录还能不能支撑下一步决定”。能支撑的,进入继承或归档;不能支撑的,进入缺测清单并注明原因。执行顺序建议是:先冻结原始返回,再按字段来源分类,再按“是否仍要保留部分数据”选择继承或冻结,最后对无法解释的值单独标记。这样做的结果是,旧内容、旧系统或旧合作关系的退出范围有据可查,保留下来的部分也确实仍然有价值。