运行 A/B 测试

使用共享存储空间 Worklet 运行 A/B 测试。

Shared Storage API 是 Privacy Sandbox 提案,用于实现通用的跨网站存储,它支持许多可能的使用场景。例如,A/B 测试就是这样一个例子,可用于在 Chrome 104.0.5086.0 及更高版本中进行测试。

您可以将用户分配给实验组,然后将该组存储在共享存储空间中,以便在跨网站环境中访问。

尝试进行 A/B 测试

如要尝试使用共享存储空间进行 A/B 测试,请确保您使用的是 Chrome 104.0.5086.0 或更高版本。然后,在 chrome://flags/#privacy-sandbox-ads-apis 处启用 Privacy Sandbox Ads API 实验标志。

将 Privacy Sandbox 广告 API 实验设为“已启用”,以便使用这些 API

您还可以在命令行中使用 --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames 标志启用共享存储空间。

使用代码示例进行实验

若要了解某个实验是否取得了预期效果,您可以在多个网站上运行 A/B 测试。作为广告客户或内容制作者,您可以根据用户所属的群组,选择呈现不同的内容或广告。群组分配保存在共享存储空间中,但无法泄露。

在此示例中:

  • ab-testing.js 应嵌入到帧中,该帧会映射一个对照组和两个实验内容。该脚本为实验调用共享存储空间 Worklet。
  • ab-testing-worklet.js 是一个共享存储空间 Worklet,它返回将用户分配到哪个组,以确定展示哪个广告。

ab-testing.js

// Randomly assigns a user to a group 0 or 1
function getExperimentGroup() {
  return Math.round(Math.random());
}

async function injectContent() {
  // Register the Shared Storage worklet
  await window.sharedStorage.worklet.addModule('ab-testing-worklet.js');

  // Assign user to a random group (0 or 1) and store it in Shared Storage
  window.sharedStorage.set('ab-testing-group', getExperimentGroup(), {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation
  const fencedFrameConfig = await window.sharedStorage.selectURL(
    'ab-testing',
    [
      { url: `https://your-server.example/content/default-content.html` },
      { url: `https://your-server.example/content/experiment-content-a.html` }
    ],
    {
      resolveToConfig: true
    }
  );

  // Render the chosen URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectContent();

ab-testing-worklet.js

class SelectURLOperation {
  async run(urls, data) {
    // Read the user's experiment group from Shared Storage
    const experimentGroup = await this.sharedStorage.get('ab-testing-group');

    // Return the corresponding URL (first or second item in the array)
    return urls.indexOf(experimentGroup);
  }
}

register('ab-testing', SelectURLOperation);

用例

以上只是共享存储空间中的部分可能的使用场景。我们会在收到反馈和发现新的用例的同时,继续添加示例。

内容选择

根据在共享存储空间中收集的信息,在围栏框架中选择不同网站并显示不同内容。这些用例的输出关口是网址选择。

  • 广告素材轮播:存储数据(如广告素材 ID、观看次数和用户互动),以确定用户在不同的网站上看到哪些广告素材。
  • A/B 测试:您可以将用户分配给实验组,然后将该组存储在共享存储空间中,以便跨网站访问。
  • 自定义用户体验:根据用户的注册状态或其他用户状态分享自定义内容和号召性用语

生成摘要报告

使用共享存储空间收集信息,并生成杂乱的汇总摘要报告。这些用例的输出关口是 Private Aggregation API

  • 唯一身份用户覆盖面衡量:许多内容制作者和广告客户都想知道有多少唯一身份用户看过他们的内容。使用共享存储空间来记录用户首次看到您的广告、嵌入的视频或发布内容,并防止系统将同一用户重复统计到不同的网站上。然后,您可以使用 Private Aggregation API 输出有关覆盖面的摘要报告。
  • 受众特征衡量:内容制作者通常希望了解其观众群的受众特征。您可以使用共享存储空间在您拥有的用户受众特征数据(例如您的第一方网站)中记录这些数据,并使用汇总报告跨许多其他网站(例如嵌入式内容)报告这些数据。
  • 衡量 K+ 频次:有时称为“有效频次”,即通常达到最低观看次数后,用户才能识别或回想某些内容(通常在观看广告的情况下)。您可以使用共享存储空间针对查看同一内容至少 K 次的唯一身份用户生成报告。

互动和分享反馈

共享存储空间提案正在积极讨论中,将来可能会发生变化。如果您在试用此 API 时有反馈意见,我们非常期待收到您的宝贵意见。