功能实验的实时区段 JavaScript(浏览器)SDK 的区段资格方法
功能实验的实时区段 JavaScript(浏览器)SDK 的区段资格方法
使用 Real-Time Segments for Feature Experimentation 区段方法获取用户的外部受众映射。您可以使用用户上下文的用户标识符来获取用户细分。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetchQualifiedSegments
最低 SDK 版本
5.0.0
描述
获取用户上下文的所有合格区段。
fetchQualifiedSegments
是UserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetchQualifiedSegments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | EyeofcloudSegmentOption[] | 用于从 ODP 获取合格区段的一组选项。 |
返回
此方法返回一个Promise<bool>
,如果成功获取区段,则 resolve 为true
,否则false
。
📘
注意
您可以直接读取和写入 qualified segments 数组。这允许绕过 ODP 的远程获取过程或使用您自己的获取服务。这在测试或调试时可能很有帮助。
示例 fetchQualifiedSegments
以下是调用 fetchQualifiedSegments 方法并访问返回的完成对象的示例:
JavaScript
const attributes = { "app_version": "1.3.2" };
const user = eyeofcloud.createUserContext("user123", attributes);
const asyncFunction = async () => {
const fetched = await user.fetchQualifiedSegments()
console.log(fetched) // true
console.log(user.qualifiedSegments) // Updated qualified segments for target user
}
获取 Segment 后,它们将被缓存。这意味着,如果同一用户再次请求区段(创建新用户上下文时),则可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器再次获取。
缓存用于调用fetchQualifiedSegments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetchQualifiedSegments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
如果您想绕过缓存,可以将以下选项添加到您的options
数组中:
EyeofcloudSegmentOption.IGNORE_CACHE
– 绕过区段缓存进行查找和保存。EyeofcloudSegmentOption.RESET_CACHE
– 重置所有段缓存。
fetchQualifiedSegments 网络图
下图显示了调用fetchQualifiedSegments时应用程序、JavaScript(浏览器)SDK 和 ODP 服务器之间的网络调用:
- 调用
fetchQualifiedSegments
方法。 - JavaScript(浏览器)SDK 对 ODP 进行 GraphQL 调用以获取区段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。
- 为用户返回适当的变体。
isQualifiedFor
版本
5.0.0
描述
检查用户是否符合给定区段的条件。
参数
isQualifiedFor
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合 |
返回
true
如果用户是合格的。
例子
以下是用户是否符合 ODP 分段条件的示例:
JavaScript(Browser)
const attributes = { "laptop_os": "mac" };
const user = eyeofcloud.createUserContext("user123", attributes);
const isQualified = user.isQualifiedFor('segment1');
console.log(isQualified); // true