发布时间:2025 年 4 月 3 日
在 Chrome 中发布新功能时,我们会进行许多检查和权衡,以确保功能能够正常运行、符合相关规定且可靠。其中一个平衡因素就是 Finch 实验。不要被其名称中的“实验”部分误导,以为它不安全,事实恰恰相反。Finch 发布功能有助于我们以安全的方式添加可能会导致兼容性问题的功能,因为如果遇到意外问题,我们可以快速停用相应功能。本文介绍了我们如何以及为何在 Chrome 中使用 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
。 - 复制“有效款式/规格”旁边列出的整个文本列表(可能很长)。
- 将该文本粘贴到文本文件(例如
variations.txt
)中,然后将其附加到 bug 中。
有了这个变体列表,Chrome 工程师就可以解码该列表,并了解您的浏览器上启用或停用了哪些功能。
Finch 实验达到 100% 并可以投放后会怎样?
当我们确信实验“成功”且相关功能不会对开发者或用户构成风险后,我们总是“在代码中”启用该功能。此时,可以安全地为 Finch 配置设置结束日期,以便在代码中启用该功能的版本之后,该配置对浏览器的影响会停止。