AB 测试跑了一周,同一批用户来回看到 A 版和 B 版,两个版本的转化率都在 12% 上下,看不出差异,抽样日志里同一个用户出现两种变体。乍看像缓存或者权限的锅,追下去往往不是。

curl -s -H 'Cookie: ab=b' https://example.com/act | grep -o 'variant-[ab]'

追下去是这么回事:分流结果写在 Cookie 里,页面本身被 CDN 缓存,缓存键没带 Cookie,后到的用户拿到别人那份 HTML 里的变体标记。前端又按本地 Cookie 渲染,两边对不上。

「AB 分流串号」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

具体做法是,分流在边缘节点做,缓存键带上变体标识,别把带用户状态的 HTML 直接缓存;变体标记同时写进页面和埋点,两边用同一个来源;用同一用户连续请求十次,确认拿到的变体不变。

验收就看一点,同一个用户十次请求拿到的变体一致,两个版本的样本不再交叉。

作者 9823189