跳转到内容
搜索文档

最佳实践

最后更新 查看 MarkdownAgent 设置

使用这些模式可以保持 Flagship 评估的可预测性、快速性和易于维护。

选择正确的评估路径

在 Cloudflare Workers 内使用 Workers 绑定。该绑定自动处理身份验证并避免应用程序管理的 API 令牌。

当您在 Workers 之外运行或需要跨供应商的 OpenFeature 接口时,请使用 OpenFeature SDK。在 Workers 中,您仍可将绑定传递给 OpenFeature 服务器提供程序,以在使用 OpenFeature API 的同时保持绑定性能。

每个请求评估一次

避免在循环中重复评估相同的标志。评估标志一次,将结果存储在局部变量中,并在请求的其余部分重复使用它。

const enabled = await env.FLAGS.getBooleanValue("show-related-items", false, {
	userId,
});

for (const item of items) {
	if (enabled) {
		item.related = await loadRelatedItems(item.id);
	}
}

一致地传递上下文

目标定位和百分比部署取决于您从应用程序传递的评估上下文。在所有地方使用稳定的标识符和相同的属性名称。

const context = {
	userId: session.user.id,
	plan: session.user.plan,
	country: request.cf?.country ?? "unknown",
};

const enabled = await env.FLAGS.getBooleanValue("new-checkout", false, context);

对于 OpenFeature SDK,使用 targetingKey 作为稳定的标识符。对于 Workers 绑定,请使用为您的部署配置的属性,例如 userId

选择安全的默认值

每种评估方法都需要一个默认值。请选择一个在标志不存在、无法评估或存在类型不匹配时能使应用程序保持安全的默认值。

对于发布标志,这通常是现有的体验。对于配置标志,请选择您的应用程序在不需要额外依赖的情况下能够处理的保守限制或行为。

使用详细信息进行调试和可观测性

当您需要了解返回某个值的原因时,请使用 *Details 方法。详细信息包括解析的值、变体、原因以及错误元数据。

const details = await env.FLAGS.getBooleanDetails("new-checkout", false, {
	userId: "user-42",
});

console.log(details.value);
console.log(details.variant);
console.log(details.reason);
console.log(details.errorCode);

逐步部署

从较小百分比的部署开始,监控应用程序指标,然后随着时间的推移增加百分比。

  1. 以较小的部署规模创建标志,例如 5%。
  2. 监控错误、延迟、业务指标和用户反馈。
  3. 随着信心的增长,增加到 25%,然后是 50%,最后是 100%。
  4. 部署达到 100% 后,将获胜的变体设为默认变体,并删除临时目标定位规则。
  5. 功能完全发布后,删除旧的代码路径并删除该标志。

清理陈旧标志

已禁用或完全部署的标志仍会增加维护成本。在删除标志之前,首先将其禁用,监控是否有意外行为,移除评估代码,部署代码更改,然后从 Flagship 中删除该标志。

这篇文档对您有帮助吗?