">文档:<amp-experiment> - amp.dev - AMP 框架
AMP

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-pixelamp-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}...

例如,网址 https://example.com?variants=VARIANTS 扩展为

https://example.com?variants=aExperiment.treatmentA!bExperiment.treatmentB

覆盖变体分配

可以通过网址片段强制实验变为某个变体。这在开发中很有用。

https://example.com/amparticle#amp-x-experiment=treatment

请注意,与正文属性中使用的相同 amp-x- 前缀。

样式

为变体设置样式

对于每个实验,分配的变体都作为文档正文元素的属性公开。

<body amp-x-aExperiment="treatment1" amp-x-bExperiment="treatment3"></body>

请注意,实验名称前面有 amp-x- 前缀,以避免命名冲突。未分配变体的实验将被忽略。

使用 CSS 属性选择器为文档设置样式。例如,以下代码为实验 aExperimenttreatment1 组隐藏了一个测试横幅

body[amp-x-aExperiment='treatment1'] .test-banner {
  display: none;
}

验证

一个 AMP 文档最多只能有一个 amp-experiment 元素。请参阅 AMP 验证器规范中的 amp-experiment 规则

需要更多帮助?

您已经阅读了本文档十多次,但它并没有真正涵盖您所有的问题?也许其他人也有同感:在 Stack Overflow 上联系他们。

转到 Stack Overflow
发现了一个错误或缺少一个功能?

AMP 项目强烈鼓励您参与和贡献!我们希望您能成为我们开源社区的持续参与者,但我们也欢迎针对您特别热衷的问题进行一次性贡献。

转到 GitHub