开发者文档-云眼AB测试

常见问题

以下是有关云眼SDK的一些常见问题。

Q: 如何将优化方案定位到一组用户?
Q: 如何QA或预览优化方案?
Q: 如何使优化方案相互排斥?
Q: SDK是否处理机器人检测?
Q: 如何访问发送到云眼的原始事件?
Q: 什么是SDK性能?
Q: 应该在activate()和track()中使用什么用户ID?
Q: 如何不断地将用户整合到SDK中?
Q: 可以在不同的SDK中使用相同的数据文件吗?
Q: 如何与多个应用程序和/或服务配合使用?
Q: 数据文件管理如何在SDK之间工作?
Q: 如何在网络浏览器中跟踪客户端发生的用户事件?
Q: 全栈如何兼容缓存?

Q: 如何将优化方案定位到一组用户?

A: 云眼SDK允许根据提供的用户属性有条件地激活优化方案。可以在Eyeofcloud UI中定义用户属性以及由一个或多个用户属性组成的受众

Q: 如何QA或预览优化方案?

A: 可以使用云眼白名单功能强制用户进入特定的优化版本来进行质量检查。白名单功能允许指定用户ID及其相应优化版本的列表。

Q: 如何使优化方案相互排斥?

A: SDK项目支持优化方案互斥。只需创建优化方案组并将优化方案分配给该组。

Q: SDK是否处理机器人检测?

A: 云眼SDK不开箱即可处理机器检测。如果使用自己的机器人检测,建议 activate() 只呼叫已经通过机器人检测过滤器的用户从优化方案中删除机器人。

Q: 如何访问发送到云眼的原始事件?

A: 云眼原始数据导出功能可以每天将所有发送到云眼的事件导出。

Q: 什么是SDK性能?

A: 已经构建了云眼SDK,所以可以将流量分解为优化方案,而无需任何网络请求。所有决策都是基于缓存在应用程序中的数据文件在内存中进行的,因此对延迟的影响可以忽略不计。如果有兴趣查看任何SDK的性能基准,请联系云眼技术支持。

Q: 应该在activate()和track()中使用什么用户ID?

A: 将SDK设计为与平台无关,因此由用户ID根据所运行的优化方案而言最为有用。如果正在尝试匿名用户,建议使用Cookie,设备ID或分析提供商自动生成的ID。如果正在尝试登录的应用程序或设备,或尝试跨多个渠道,则可以使用散列电子邮件地址或其他UUID。

Q: 如何不断地将用户整合到SDK中?

A: 所有的SDK都通过MurmurHash3使用确定性的功能来确定哪些优化方案和优化版本应该对用户有效。这样可以确保用户在多次访问或不同渠道中获得相同的待遇。还确保所有的SDK都能提供相同的输出,无论使用什么语言。

Q: 可以在不同的SDK中使用相同的数据文件吗?

A: 是的。数据文件是语言不可知的,可以在不同的SDK中使用同一个项目中相同的数据文件,并且可以在它们之间获得一致的竞争。这样,可以激活并跟踪不同SDK之间的完全相同的优化方案,并获得一致的结果。

Q: 如何与多个应用程序和/或服务配合使用?

A: 可以使用选择的SDK执行一个后端的流量拆分,然后使用其他SDK(如其他后端服务,移动客户端或使用JavaScript SDK的浏览器)跟踪多个不同位置的转换事件。

Q: 数据文件管理如何在SDK之间工作?

A: 跨多个SDK管理数据文件文件的推荐方法是拥有一个集中式服务,可以预订项目中的数据文件webhook,并将更新推送到订阅数据文件文件更改的其他服务。这些服务反过来将使用他们拥有的优化SDK重新实例化其Eyeofcloud实例。

Q: 如何在网络浏览器中跟踪客户端发生的用户事件?

A: 创建了一个轻量级的JavaScript SDK,可用于跟踪来自Web浏览器的转换事件。请注意,这与云眼标准JavaScript代码段不同,因此它不会干扰在浏览器中运行客户端的任何优化方案。

Q: 全栈如何兼容缓存?

A: 云眼许多客户正在使用CDN来缓存内容,这意味着在后端使用云眼的SDK之一可能需要自定义配置。可以通过多种方法在缓存体系结构中使用云眼 Full Stack:

  1. (推荐)使用CDN提供的现成的负载均衡器。
    a. 在这个层上实现云眼SDK之一来运行恶化逻辑。
    b. 使用从屈曲获得的变体键和URL作为缓存键的一部分来确定要显示的变体。

  2. 在CDN之上构建自己的负载均衡器,并执行其中的降压逻辑,以确定显示用户的变化。

  3. 使用CDN侧脚本,例如Akamai的Edge Side Includes(ESI)来运行降压逻辑,以确定正确的返回值。

  4. 在页面上运行内联JavaScript代码。
    a. 使用云眼JavaScript SDK和数据文件添加脚本。
    b. 脚本将运行恶化逻辑,设置cookie或URL查询参数并重新加载页面。
    c. 缓存层应使用查询参数或cookie以及URL作为缓存键来确定要显示的变体。