只需要解决这个问题!@swapnil-jain 的方法似乎在表面上起作用,但不幸的是有一些问题。
当优化工具评估新用户是否应该选择加入实验列表时,它会_gaexp
为所有选择加入的 cookie 创建一次,它不会创建它然后在选择加入之间更新它。
因此,它会查找_gaexp
cookie,评估 Exp A ( does not contain
<expBId>
) 的选择加入并选择用户加入 Exp A。然后它评估 Exp B ( does not contain
<expAId>
) 的选择加入,并选择用户加入 Exp B。然后它创建一个cookie 读取类似的东西GAX1.3.<expAId>.<expDate>.<value>.<expBId>.<expDate>.<value>
。
现在的问题是,在他们第二次访问时,用户将被排除在任一实验的变体之外,因为他们现在不符合受众定位条件。他们的 cookie 现在同时包含<expAId>
和<expBId>
!
我在尝试_gaexp
使用正则表达式定位 cookie 时遇到了类似的问题,因为在决定选择加入后,cookie 是为两个实验一次性创建的。
我当前的工作解决方案是创建一个名为rand100
. 对于第一次使用的用户,它会生成一个随机数 0-100。如果该数字低于 50,则为 Exp A 评估它们,并存储包含该rand100
值的 cookie。如果等于或大于 50,则将其评估为 Exp B。对于返回用户,检索 cookie,并rand100
返回之前的值而不是新的值,因此他们仍然满足他们已经进行的实验的定位条件被选择加入。
一个 cookie 在选择加入评估之间共享,因为它在 Exp A eval 期间运行自定义 JavaScript,因此 cookie 可用于 Exp B eval。cookie 设置为 90 天后过期,这是优化跟踪的默认过期时间。
我以 100% 的流量运行这些实验,但从技术上讲,他们只看到 50% 的流量,因为rand100
. 流量在 control/v1/control/v1 之间分配 25%/25%/25%/25%。