Chrome 用于测试新浏览器功能的机制
您可能听说过 Chrome 变体版本或 Chrome 现场试验,甚至可能听说过内部代号 Chrome Funch。
这些名称是同一事物的名称:用于测试 Chrome 浏览器的新功能或更改的机制,或用于测试 ChromeOS(在 Chromebook 上运行的 Chrome 操作系统)的机制。
Chrome 变体的用途是什么?
借助 Chrome 变体版本,Chrome 可以激活某项新功能、停用某项功能或尝试为部分用户更改某项功能。
并非 Chrome 中的所有内容都是使用 Chrome 变体版本机制引入的。不过,当我们需要特别谨慎地进行更改时,或者某项更改存在可能会以意想不到的方式影响性能时,Chrome 团队可以使用 Chrome 变体版本。“更改”可能意味着增强了 Chrome 代码的性能、更新浏览器的外观或功能,有时甚至可能对 JavaScript API 进行了修改。
Chrome 变体版本还可用于验证关于某项更改或更新的假设。例如,对于“Chrome 变体版本”群组中的一部分用户,我们尝试调整了 QUIC 网络协议参数,以使 Chrome 能够更快地响应用户的实际网络条件。
您还可能会遇到 Chrome 变体版本,那就是您参与了 Chrome 的源试用。默认情况下,所有提供有效试用令牌的网页上都会启用源试用功能,但在某些情况下,系统会使用 Chrome 变体版本来控制功能的激活。这意味着,即使用户要访问提供有效试用令牌的页面,他们可能也无法使用源试用功能。每次源试用的相关文档和更新中都会提供符合激活源试用功能条件的用户比例的相关信息。
Chrome 变体版本是如何运作的?
在桌面设备或移动设备上,或者在您每次启动 Chrome 时,浏览器每 30 分钟向 Chrome 后端发出请求,以获取 Chrome 变体版本配置文件,该文件称为变体种子。换句话说,系统会通过专用服务器提供 Chrome 变体版本种子。Chrome 向服务器发出 HTTPS 请求,然后服务器会返回一个经过增量压缩的种子。
当您设备上的 Chrome 与 Chrome 变体后端联系以获取种子文件时,它还会提供有关 Chrome 版本及其运行所在操作系统的信息。Chrome 变体版本后端返回的文件用于开启功能、关闭功能或指定功能变体。
Chrome 使用种子文件中的数据以及本地存储的随机化种子将浏览器随机分配到变体组。换言之,随机化种子与来自 Chrome 变体版本后端的种子文件相结合,可用于为一部分用户启用或停用浏览器中的功能。浏览器会记录自己属于哪个变体组。
功能发布和 Chrome 渠道
Chrome 变体最重要的用途之一就是逐步向一定比例的 Chrome 客户端逐步推出变更或新功能。这对于像 Chrome 这样拥有数十亿用户、在多个平台上有数千种类型的设备、为数百万个不同的应用和网站使用数十种不同的语言的应用来说至关重要。
Chrome 通过在 Chrome Canary 版、开发者版和 Beta 版中的使用情况和测试获取有价值的反馈。我们可以使用 Chrome 变体来启用或停用任何发布渠道中的功能。不过,这些渠道主要由开发者和其他专家使用。Chrome 稳定版用户与 Chrome 的互动方式有所不同,而且互动数量要大得多,因此我们始终需要在稳定版上进行验证。这样,我们就可以解决在正常使用浏览器过程中遇到的任何问题。Chrome 工程师无法随时大规模预测真实用户会如何响应变化和新功能。
Chrome 变体是一种帮助实现这一点的重要机制,通过该功能,您可以通过启用或停用某项功能来查看 Chrome 稳定版的使用情况和指标。通过衡量 Chrome 稳定版中变更的影响,我们能够尽可能地推出最佳功能并打造更好的浏览器,即使权衡比较复杂也是如此。
Chrome 工程师何时会使用 Chrome 变体版本?
Chrome 需要使用 Chrome 变体版本的主要原因有三大。
激活新功能
使用 Chrome 变体版本控制新功能的激活对于任何可能在某种程度上具有更高风险或可能影响性能的操作特别有用。
借助 Chrome 变体版本,我们可以为部分用户提供新功能。然后,Chrome 工程师可以查看性能方面的差异,或者查看来自变体组的其他类型的反馈。
停用地图项
Chrome 变体版本可用作关闭功能的安全机制,但这种情况很少出现。
例如,新的网络功能可能会受到拒绝服务攻击。Chrome 变体版本可用于快速关闭此类功能,因为 Chrome 变体版本配置每 30 分钟下载一次,并且每次重启 Chrome 时都会激活相关设置。相比之下,更新 Chrome 并等待新版本传播到数十亿用户的速度要慢得多。
尝试更改地图项
最后,Chrome 变体版本可用于验证更改和更新。例如,我们可以微调 Chrome 离线恐龙游戏的难度,让互动体验更有趣。
Chrome 变体版本也可用于研究新功能的长期影响。为此,我们使用 Chrome 变体版本机制为一小部分用户(可能不到 1% 的用户)保留某些功能。隔离组可用于检查仅随着时间的推移而出现的更改和副作用。
受限组对于界面更改尤为重要,因为在这种情况下,用户可能会在新功能前与功能互动,但从长远来看,其行为方式可能会有所不同。
例如,我们在 Chrome 中推出了照片选择器,但暂时禁止一小部分用户使用此功能,以比较结果。我们向大量用户推出新的 Android 照片选择器,刚开始时,群组在网络上分享的图片数量大幅增加。但是,在我们实施该隔离变体的六个月中,我们发现使用量显著下降。这是因为新的照片选择器的推出鼓励网站向文件输入元素添加接受属性,从而为所有用户提供更好的体验。
如何使用 Chrome 变体进行验证?
如果已启用有助于改进 Chrome 功能和性能的设置 (chrome://settings/syncSetup?search=improve
),Chrome 可以使用称为用户指标分析 (UMA) 的机制自动监控指标并将其发送到 Chrome 后端。您可以在 chromestatus.com/metrics 上查看 Chrome 的匿名使用情况统计信息示例,例如使用 CSS 属性、HTML 或 JavaScript 功能的网页加载百分比。
Chrome 变体版本对于比较一组用户的统计信息与另一组用户的统计信息特别有用。例如,您可以为部分用户(而非其他用户)开启某项功能,并且 Chrome 可以比较每个群组的指标。这些指标可能包括内存用量、网页加载时间或浏览器功能的使用情况。这样一来,Chrome 工程师就可以比较启用了功能的用户、已停用该功能的用户或具有不同功能变体的用户的性能或其他指标。
Chrome 变体版本现场试验
特征的每组变体称为一次研究或现场试验,每组变体都有固定的时长。某项功能的研究结束后,非默认行为组中的所有用户都将获得该功能的默认 Chrome 设置(启用或停用)。
可由 Chrome 变体控制的大多数功能对应于一个可从 chrome://flags
页面设置的标志。或者,如果您从命令行运行 Chrome,则可以使用 --enable-features
和 --disable-features
标志来配置 Chrome 变体。
--reset-variation-state
标志会强制重置当前客户端的 Chrome 变体版本状态。这意味着客户端可能会移至不同的 Chrome 变体组。
适用于企业的 Chrome 变体
对于企业客户,Chrome 还提供了 ChromeVariations 政策来管理 Chrome 变体。当然,我们建议启用 Chrome 变体版本,以便 Chrome 快速提供重要的安全修复程序。