Chrome 和 Firefox 的 100 版本號會帶來什么問題?
隨著雙方互飆版本號,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 字符串遵循該模式: ...(主要版本號_次要版本號_構建號_補丁號)。
目前在 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:
- 打開 Firefox Nightly 的設置菜單。
- 搜索“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 上提交報告。