发布时间:2025 年 4 月 3 日
在 Chrome 中发布新功能时,需要进行多项检查和平衡,以确保功能正常、合规且可靠。其中一项平衡措施就是 Finch 实验。不要因为名称中包含“实验”就认为它不安全,事实恰恰相反。Finch 推出有助于我们以安全的方式添加可能会导致兼容性问题的功能,因为如果遇到意外问题,我们可以快速停用功能。本文介绍了我们如何在 Chrome 中使用 Finch 发布某些功能,以及使用 Finch 的原因。
一般来说,在 Chrome 中启用功能只需在 Chrome 中将布尔值从“关闭”切换为“开启”即可。当新功能“发布”时,这意味着所有用户的此布尔值的默认状态都已更改为“开启”。有几种方法可以实现此目的:
- “在代码中”启用功能 :这意味着 Chrome 可执行文件本身具有默认启用的设置。
- “通过源试用”启用功能:源试用系统是一种让特定网站选择让所有 Chrome 用户参与实验的方式,该实验仅在该网站上启用特定功能。
- “使用 Finch”启用功能 :Chrome 会定期从服务器提取配置文件,该文件可以包含启用或停用功能的说明。
- “Finch 终止开关” :与“使用 Finch”启用功能相反。在这种情况下,功能“在代码中”启用,然后使用 Finch 系统停用,通常是由于发布后检测到问题。
Finch 使用场景
这篇博文的主题是 Finch,因此我们不会过多讨论“在代码中”启用或“源试用”。但 Finch 有多个有趣的使用场景。
针对一小部分用户进行测试(A/B 测试)
通常,Finch 用于对功能或优化进行“A/B 测试”。在这种情况下,功能会针对一小部分用户启用,以便收集有关功能启用与停用时性能、行为或使用情况差异的数据。
A/B 测试的一个示例是我们推出 推测性图片解码 时。这是一种性能改进,除了让 Chrome 更快地加载网页外,开发者或用户不应注意到任何其他变化。但为了确保没有发生任何意外情况,并且能够准确衡量性能影响,我们使用 Finch 对其进行了 A/B 测试。
停用存在问题的功能
为了确保产品安全和用户体验,Chrome 可以使用 Finch 系统远程停用“在代码中”启用的存在问题的功能。例如,如果某项功能默认启用,但问题仅在 Chrome 达到稳定版状态后才出现,我们需要一种快速停用该功能的方法,以便让用户和企业恢复到安全状态。当功能中存在未发现的 bug,或者功能因意外原因导致现有网站出现问题时,可能需要这样做。
以更安全的方式启用有风险的功能
对于 Chrome 推出的大部分功能,风险很小,因为我们可以测试并验证新代码在所有网站上都能正常运行。
不过,有时推出功能可能非常危险,因为存在未知的兼容性问题或其他棘手的互动。在这种情况下,Finch 系统实际上可以用于启用 功能,而不是仅仅将其作为终止开关保留。
例如,HTML 解析器“放宽”是与新的可自定义选择功能相关的一项更改,该功能允许在 <select> 元素中放置比以前更多的内容。由于此更改可能会导致现有网站出现问题,因此我们需要谨慎推出。
使用 Finch 启用功能可能比使用 Finch 移除功能更安全,因为 Finch 出于各种原因无法覆盖 100% 的用户。例如,某些企业用户制定了完全禁止 Finch 配置的政策。如果功能在代码中启用,然后使用 Finch 终止开关停用,这些用户仍会面临风险,因为这些用户不会收到 Finch 设置,并且会继续启用该功能。但如果我们改用 Finch 启用 功能,则可以保证在紧急情况下能够为所有用户停用该功能。
如何检查您是否参与了 Finch 实验?
用户很难直接做到这一点。建议的方法是与 Chrome 工程师联系(通常是在 Chromium bug 的上下文中),并向他们发送您的“变体列表”。这是给定浏览器的所有 Finch 设置的特殊编码版本列表。您可以轻松检索到该列表:
- 前往
chrome://version。 - 复制“Active Variations”旁边列出的整个文本列表(是的,它可能很长)。
- 将该文本粘贴到文本文件(例如
variations.txt)中,并将其附加到 bug。
有了此变体列表,Chrome 工程师就可以解码该列表,并查看您的浏览器中启用了哪些功能,停用了哪些功能。
Finch 实验达到 100% 并准备就绪后会发生什么情况?
一旦我们确信实验“成功”,并且相关功能不会给开发者或用户带来风险,我们始终会“在代码中”启用该功能。此时,可以安全地为 Finch 配置设置结束日期,以便在代码中启用该功能的版本之后,该配置不再对浏览器产生影响。