先给结论:当同一个页面或同一批流量被分配到不同版本时,样本污染的本质是“被比较的两组并非只差一个变量”。识别它的第一步不是看工具里的汇总数字,而是把分流规则、命中条件和数据来源逐层对齐,确认哪些访客本不该进入某一组。如果无法还原分流链路,保留现有工具做聚合观察、改写分流规则、或退出当前对比实验,是三种不同前提下的选择。
不同版本并存时,污染可能出现在三个位置。分流层是访客被分到哪一组的规则,例如按设备、地域、登录状态或随机数。命中层是访客实际看到并加载了哪个版本,缓存、CDN、A/B 脚本延迟、前端重定向都会让“被分到 A 组”的访客实际看到 B 版本。统计层是工具把访客归入哪一组上报,常见于同一访客跨设备、跨会话、或先加载旧版本再被脚本改写。
区分方法很直接:分流层看规则配置和分流比例是否符合预期;命中层看页面实际渲染的版本标识;统计层看同一访客 ID 在两组中是否都出现过。三层中只要有一层对不上,后面的指标差异就不能直接归因于版本本身。
聚合报表通常只给每组的总量,无法暴露个体交叉。需要下钻到访客或会话粒度,检查是否存在同一标识同时进入两组、或短时间内组别切换的记录。可核查的证据链包括:
这里要注意口径差异:第三方估算流量、搜索引擎报告与站内统计对“一次访问”的定义不同,数量对不上本身不等于污染,只有当差异能追到具体访客的组别切换时,才构成交叉证据。请求量或抓取量归零也不能单独证明分流正确,它同样可能是采集中断、过滤规则变化或上报延迟。
保留现有工具继续观察,前提是污染只出现在少数可识别的边缘场景,例如未登录访客或特定缓存节点。此时可在报表中把这些访客单独排除,保留主体数据做趋势判断。动作是给分流和上报加上访客级标识并定期抽查,如果抽查显示交叉比例稳定且很低,后续分析可以继续使用,但结论强度要降级。
改写分流与命中规则,前提是污染来自规则本身,比如按 IP 分流导致同一办公网络被反复切换,或缓存未按版本隔离。动作是把分流依据改为更稳定的服务端标识,并让版本标识随响应头或页面内容一起输出,而不是只依赖前端脚本。改写后需要重新验证:同一访客在多次访问中是否保持在同一组,若仍不稳定,说明还有未覆盖的命中路径。
退出当前对比实验,前提是污染无法在可接受成本内消除,或两组差异本身就很小、容易被交叉噪声淹没。此时继续对比得到的数字没有决策价值,退出不是失败,而是避免把噪声当成版本效果。退出后应保留分流日志和原始事件表,供以后用更干净的条件重做。
假设某站点把访客按随机数分成 A、B 两组,A 组看到旧版导航,B 组看到新版。分析时发现 B 组的跳出率明显低于 A 组。此时不要直接下结论。先取一周的分流日志,按访客 ID 统计每人出现的组别数量。若发现约一部分访客同时出现在两组,再检查这些访客的首次命中版本与后续版本是否不同。若差异主要来自跨设备或清空缓存后的重新分流,则属于统计层交叉;若来自 CDN 缓存未按版本隔离,则属于命中层污染。
这个例子的数字只用于说明比较方法,不代表任何真实站点。关键动作是:先固定一个可追踪的访客标识,再让版本信息随每次请求落库,最后用“同一访客是否跨组”作为是否污染的判据。判据成立时,下一步应优先修分流或缓存,而不是继续调报表口径。
识别样本污染后,决策取决于污染是否可隔离以及对比是否仍有意义。可隔离时,保留工具并缩小分析范围;污染来自规则且可修复时,改写分流与命中逻辑并重新验证;污染不可控或差异过小时,退出对比并保留原始数据。无论选哪条路,都要让版本标识和访客标识同时可追溯,否则下一次仍会面对同样的归因困难。