amp-experiment
描述
用于在 AMP 页面上进行用户体验实验。
必需脚本
<script async custom-element="amp-experiment" src="https://cdn.ampproject.org/v0/amp-experiment-0.1.js"></script>
用法
使用 amp-experiment
组件进行用户体验实验,例如 A/B 测试和多变量测试,并收集相应的数据。
<amp-experiment>
提供钩子来定义可自定义的变体,并根据配置将流量分配给每个变体。对于每个页面浏览,变体分配也会暴露给 amp-pixel
和 amp-analytics
,以便可以收集必要的数据来执行跨变体的统计比较。
支持用户粘性变体分配,为同一客户端提供一致的用户体验。此功能依赖于 AMP 的 客户端 ID 功能来提供在页面浏览中一致的随机值。请注意,使用此功能可能会要求您更新您的隐私政策,或在某些司法管辖区获得最终用户的同意。(如果这对您很重要,请参见下面的 consentNotificationId
。)
可以在同一个 AMP 文档中并行运行多个实验,每个实验都有自己的一组变体。在用户粘性模式下,不同实验之间的分配是正交的,这意味着来自不同实验的 2 个变体(用户组)之间不会存在相关性。
配置
实验的配置在 JSON 对象中指定。
<amp-experiment> <script type="application/json"> { "aExperiment": { "sticky": true, "consentNotificationId": "consent-notif", "variants": { "treatment1": 12.5, "treatment2": 12.5, "treatment3": 25.0 } }, "bExperiment": {...} } </script> </amp-experiment>
在顶层,JSON 是按实验名称键控的实验配置的映射。在每个实验中,可用设置在下表中描述
名称 | 是否为必填字段? | 描述 |
---|---|---|
sticky | 否,默认值 = true | 实验分配是否对用户具有粘性。 |
consentNotificationId | 否,默认值 = undefined | 在进行粘性实验之前要取消的 amp-user-notification 的元素 ID。为不阻止页面渲染,如果未在当前访问之前提供同意,则将跳过指定此字段的实验。也就是说,只有返回的用户访问并且用户同意后才能触发此类实验。此设置仅在 sticky=true 时相关。 |
variants | 是 | 名称到百分比的映射,其中百分比是一个大于 0 且小于 100 的浮点数,表示将分配给该变体的流量。变体不必加起来等于 100%。在这种情况下,将有一部分流量分配给名为 none 的变体,这是一个保留关键字,表示没有分配任何变体。 |
高级设置 | ||
cidScope | 否,默认值 = amp-experiment | 用于用户粘性实验的 CID 作用域。仅当您想重用现有 CID 时才有用。此设置仅在 sticky=true 时相关。 |
group | 否,默认值 = {experimentName} | 具有相同组名称的实验将共享同一个 CID 空间。仅当多个实验想要具有相关的用户分组时才有用。此设置仅在 sticky=true 时相关。 |
实验名称和变体名称中使用的字符限制为 [a-z,A-Z,0-9,-,_]
。none
是保留关键字,不能使用。
分析
分配的变体可用作 URL 替换变量:VARIANT(experiment)
<amp-pixel src="https://example.com?xname=aExperiment&xvar=VARIANT(aExperiment)" ></amp-pixel>
对于没有分配变体的实验,此变量解析为字符串文字 none
。
变量 VARIANTS
返回所有以以下格式序列化的变体
{experiment1}.{variant}!{experiment2}.{variant}...
例如,URL https://example.com?variants=VARIANTS
扩展为
https://example.com?variants=aExperiment.treatmentA!bExperiment.treatmentB
覆盖变体分配
可以通过 URL 片段强制将实验设置为一个变体。这在开发中很有用。
https://example.com/amparticle#amp-x-experiment=treatment
注意与 body 属性中使用相同的 amp-x-
前缀。
样式
设置变体样式
对于每个实验,分配的变体都作为文档 body 元素的属性公开。
<body amp-x-aExperiment="treatment1" amp-x-bExperiment="treatment3"></body>
请注意,实验名称以 amp-x-
为前缀,以避免命名冲突。忽略未分配变体的实验。
使用 CSS 属性选择器来设置文档样式。例如,下面的代码隐藏了 aExperiment
实验的 treatment1
组的测试横幅
body[amp-x-aExperiment='treatment1'] .test-banner { display: none; }
验证
一个 AMP 文档最多只能有一个 amp-experiment
元素。 请参见 AMP 验证器规范中的 amp-experiment 规则。
您已经阅读此文档很多遍了,但它并没有真正涵盖您的所有问题?也许其他人也有同感:在 Stack Overflow 上联系他们。
转到 Stack Overflow 发现错误或缺少功能?AMP 项目强烈鼓励您的参与和贡献!我们希望您成为我们开源社区的持续参与者,但我们也欢迎您为自己特别感兴趣的问题做出一次性贡献。
转到 GitHub