Chrome 和 Firefox 的 100 版本号会引发啥问题?

来源: 投稿
作者: 罗奇奇
2022-02-18 08:22:00

随着双方互飙版本号,Chrome 和 Firefox 的开发人员均表达出对 100 以上的三位数版本号的担忧。

12 年前,当时流行的浏览器在首次达到版本 10 时,由于主要版本号从一位数变为两位数,在 User-Agent 解析库中发现了许多问题。在没有规范可遵循的情况下,不同的浏览器对 User-Agent 字符串和特定于站点的 User-Agent 解析具有不同的格式,

此外,由于没有考虑到三位主要版本号,一些 UA 解析库可能有编码逻辑上的错误。不过当年浏览器版本号从一位数变成两位数时,许多 UA 解析库都改进了解析逻辑,因此,三位数的版本号在 UA 解析库中应该不会出什么问题。

Chrome 团队的工程师 Mike Taylor 对常见的 UA 解析库进行了调查,但没有发现任何问题。在现场运行 Chrome 实验时发现了一些问题,这些问题正在解决中。

应对方案

Firefox 和 Chrome 都在进行实验,尝试把当前版本的浏览器的主要版本号设置成 100,以检测网站可能出现的问题。这类实验找到了一些可能出现的问题,其中一部分已经修复,实验将继续运行,直到版本 100 发布。

除此之外,每个浏览器厂商都对 100 版本号制定了备份的缓解策略,以防止 100 版发布到稳定渠道后突发恶疾,对一些网站造成不可逆的伤害。

Firefox 缓解

在 Firefox 中,缓解策略将取决于损坏的重要性。

Firefox 有一个站点干预机制,Mozilla webcompat 团队可以使用这种机制在 Firefox 中热修复损坏的网站。在 Firefox URL 栏中输入内容 about:compat就可以看到当前正在修复的内容。

如果站点在特定域上的主要版本为 100 时中断,则可以通过发送 版本 99 来修复它。如果破坏范围很广,并且个别站点的干预变得难以管理,Mozilla 可以将 Firefox 的主要版本暂时冻结在 99,然后测试其他选项。

Chrome 缓解

Chrome 版本中报告的 User-Agent 字符串遵循该模式: <major_version>.<minor_version>.<build_number>.<patch_number>(主要版本号_次要版本号_构建号_补丁号)。

目前在 Chrome  中的备用方案是直接将 User-Agent 字符串中的主要版本号冻结在 99,然后在次要版本部分报告真正的主要版本号(相关代码已经登陆)。如果使用备份计划,则 Chrome 101 版本 的 User-Agent 字符串将如下所示:99.101.4988.0 ,99

由于 Chrome UA 字符串中的次要版本号很长一段时间都是 0,所以 Chrome 还在进行实验,以确保次要版本号部分写三位数的值不会导致 Bug。

Chrome 团队将根据报告的问题的数量和严重程度决定是否使用备份选项

用户可参与测试

在 Chrome 和 Firefox Nightly 中,用户也可以手动把浏览器的版本号改成 100 ,然后测试日常使用有没有问题。   

  Firefox Nightly 

  1. 打开 Firefox Nightly 的设置菜单。
  2. 搜索“Firefox 100”,然后选中“Firefox 100 User-Agent String”选项。

Chrome 

  1. URL 栏输入 chrome://flags/#force-major-version-to-100
  2. 将选项设置为“启用”。
  • 如果你是网站维护者,请使用 Chrome 和 Firefox 100 测试网站,检查 User-Agent 解析代码和库,并确保它们能够处理三位数的版本号,在此可查看目前正在受影响的网站模式
  • 如果你开发一个 User-Agent 解析库,添加测试来解析大于等于 100 的版本号。浏览器厂商早期的测试表明,最新版本的 UA 解析库都可以正确处理它。但如果你有旧版本的解析库,是时候检查并升级了。
  • 如果你是浏览器用户,在浏览网页时发现主要版本 100 有任何问题,请在 webcompat.com 上提交报告

 

展开阅读全文
点击加入讨论🔥(10) 发布并加入讨论🔥
本篇精彩评论
10 评论
5 收藏
分享
返回顶部
顶部