根据在共享存储空间中收集的数据选择网址,并在围栏框中呈现内容。
借助 Shared Storage API,您可以选择要使用跨网站数据呈现到围栏框中的网址。使用 JavaScript 读取和写入跨网站数据,然后根据存储的数据从提供的列表中选择网址。您可以在围栏框架中呈现该网址。
网址选择可以包括任何类型的内容:广告、文章、图片、HTML、号召性用语(例如按钮)等。
例如,假设您经营着一个旅游网站,并投放了一个包含三个不同广告素材的广告系列。您希望根据用户的互动(观看或点击)来调整这些广告素材的顺序。
当用户首次观察到胜出的广告展示位置时,您可以在共享存储空间中存储该广告素材的 ID 和点击状态。也就是说,当您在该用户访问的其他网站上赢得广告竞价时,可以根据这些数据展示不同的广告。
您的 JavaScript 在 worklet 中运行以检索此信息,但您的代码无法与父级页面上的 iframe 或围栏框架之外的代码进行交互或通信。
我们再来看一个示例。假设您有兴趣测试哪篇文章在嵌入式情境中的效果更好。您可以在网站上看到用户时将其分配到实验组,然后将该组 ID 存储在共享存储空间中,以便在跨网站情境中访问。在另一个网站上,您的围栏框可以根据该用户的实验组(存储在共享存储空间中)选择网址。
借助共享存储空间,您可以根据跨网站数据做出明智的决策,而无需与嵌入网站共享用户信息(例如浏览器历史记录或其他个人详细信息),也不必将数据渗漏到您自己的服务器。
使用场景
使用共享存储空间选择网址支持以下用例:
- 轮播广告素材:您可以存储数据(例如广告素材 ID 和用户互动情况),以确定用户在不同网站上看到的广告素材。
- 频率。 浏览器浏览次数可存储在共享存储空间中,并用于确定向用户展示哪个广告素材。
- 运行 A/B 测试:将用户分配到实验组,然后将该组 ID 存储在共享存储空间中以供跨网站访问。
- 自定义用户体验:根据用户的注册状态或其他用户验证状态分享自定义内容和号召性用语。
预算
为了降低跨网站数据泄露的风险,Select 网址 API 使用了一种预算系统,该系统结合了长期预算和短期预算:
- 长期预算:使用
selectURL()
时,每个调用方网站每天 12 位预算。只有在托管所选网址的框架执行顶级导航时,系统才会从此预算中扣款,费用计算方式为log2(number of URLs)
。因此,如果您提供 8 个网址供用户选择,则需要 3 位二进制数。当天剩余的所有预算均按12 - (sum of bits deducted in the last 24 hours)
计算;如果剩余预算不足,系统会返回默认网址(列表中的第一个网址),如果系统转到默认网址,则会记录 1 位。 短期预算:按网页加载次数设置的额外限制。系统会限制每个调用方在每次网页加载时使用
selectURL()
泄露的字节数,该限制为 6 位/调用方/网页加载。此外,还有一个每个网页总加载 12 位预算,这是对网页上所有调用站点的总限制。借助已保存的查询,您可以在同一页面上重复使用之前的
selectURL()
结果,从而减少短期预算用量。首次使用已保存的查询名称调用selectURL()
时,系统会在页面生命周期内存储生成的索引。当使用相同的已保存查询名称调用selectURL()
进行后续调用时,系统会返回存储的索引,并且不会运行已注册的操作。在这种情况下,系统只会在首次使用时扣减预算,而不会在同一网页加载期间的任何重复使用中扣减预算,因为系统不会显示任何全新信息。如需实现已保存的查询,请将
savedQuery
属性(以及您选择的查询名称)添加到 options 对象,如以下示例所示。const topProductUrls = [ { url: 'https://ad.example/default-top-product.html' }, { url: 'https://ad.example/experiment-top-product.html' }]; const relatedProductUrls = [ { url: 'https://ad.example/default-related-product.html' }, { url: 'https://ad.example/experiment-related-product.html' }]; // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'` // on this page, so it will be charged to both per-page budgets. const topProductsConfig = await sharedStorage.selectURL( 'productExperiment', topProductUrls, { savedQuery: 'control_or_experiment', keepAlive: true, resolveToConfig: true }); document.getElementById('topProductsFencedFrame').config = topProductsConfig; // This next call with this savedQuery won't charge either of the per-page budgets. const relatedProductConfig = await sharedStorage.selectURL( 'productExperiment', relatedProductUrls, { savedQuery: 'control_or_experiment', resolveToConfig: true }); document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
尝试选择网址
您可以在 Chrome Canary/Dev/Beta M105 及更高版本中测试使用 Shared Storage API 的网址选择功能。如需测试网址选择功能,请在 chrome://settings/adPrivacy
下启用所有广告隐私权 API。
试用演示
此演示从希望在不同发布商网站上存储信息的广告客户、广告技术平台、内容分销商或其他第三方服务的角度构建而成。在演示中,对于每个用例,发布商 A 和发布商 B 网站上都运行相同的第三方代码。访问各个发布商的页面,了解数据在跨网站情境中的共享方式。
互动和分享反馈
共享存储空间提案正在积极讨论,可能会发生变化 。如果您试用此 API 并有反馈意见,我们非常期待收到您的反馈意见。
- GitHub:阅读 提案、覆盖面白皮书、提出问题并参与讨论。
- Shared Storage API 通告:加入我们的邮寄名单,或查看以往的通告
- 开发者支持:提出问题并加入 Privacy Sandbox 开发者支持代码库。