Chrome 和 Firefox 的 100 版本號會帶來什麼問題?

2022-02-18 09:00:15

隨著雙方互飆版本號,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 有任何問題,請。

 

展開閱讀全文