Chrome 和 Firefox 的 100 版本號(hào)會(huì)帶來什么問題?
隨著雙方互飆版本號(hào),Chrome 和 Firefox 的開發(fā)人員均表達(dá)出對(duì) 100 以上的三位數(shù)版本號(hào)的擔(dān)憂。
12 年前,當(dāng)時(shí)流行的瀏覽器在首次達(dá)到版本 10 時(shí),由于主要版本號(hào)從一位數(shù)變?yōu)閮晌粩?shù),在 User-Agent 解析庫中發(fā)現(xiàn)了許多問題。在沒有規(guī)范可遵循的情況下,不同的瀏覽器對(duì) User-Agent 字符串和特定于站點(diǎn)的 User-Agent 解析具有不同的格式。
此外,由于沒有考慮到三位主要版本號(hào),一些 UA 解析庫可能有編碼邏輯上的錯(cuò)誤。不過當(dāng)年瀏覽器版本號(hào)從一位數(shù)變成兩位數(shù)時(shí),許多 UA 解析庫都改進(jìn)了解析邏輯,因此,三位數(shù)的版本號(hào)在 UA 解析庫中應(yīng)該不會(huì)出什么問題。
Chrome 團(tuán)隊(duì)的工程師 Mike Taylor 對(duì)常見的 UA 解析庫進(jìn)行了調(diào)查,但沒有發(fā)現(xiàn)任何問題。在現(xiàn)場(chǎng)運(yùn)行 Chrome 實(shí)驗(yàn)時(shí)發(fā)現(xiàn)了一些問題,這些問題正在解決中。
應(yīng)對(duì)方案
Firefox 和 Chrome 都在進(jìn)行實(shí)驗(yàn),嘗試把當(dāng)前版本的瀏覽器的主要版本號(hào)設(shè)置成 100,以檢測(cè)網(wǎng)站可能出現(xiàn)的問題。這類實(shí)驗(yàn)找到了一些可能出現(xiàn)的問題,其中一部分已經(jīng)修復(fù),實(shí)驗(yàn)將繼續(xù)運(yùn)行,直到版本 100 發(fā)布。
除此之外,每個(gè)瀏覽器廠商都對(duì) 100 版本號(hào)制定了備份的緩解策略,以防止 100 版發(fā)布到穩(wěn)定渠道后突發(fā)惡疾,對(duì)一些網(wǎng)站造成不可逆的傷害。
Firefox 緩解
在 Firefox 中,緩解策略將取決于損壞的重要性。
Firefox 有一個(gè)站點(diǎn)干預(yù)機(jī)制,Mozilla webcompat 團(tuán)隊(duì)可以使用這種機(jī)制在 Firefox 中熱修復(fù)損壞的網(wǎng)站。在 Firefox URL 欄中輸入內(nèi)容 about:compat就可以看到當(dāng)前正在修復(fù)的內(nèi)容。
如果站點(diǎn)在特定域上的主要版本為 100 時(shí)中斷,則可以通過發(fā)送 版本 99 來修復(fù)它。如果破壞范圍很廣,并且個(gè)別站點(diǎn)的干預(yù)變得難以管理,Mozilla 可以將 Firefox 的主要版本暫時(shí)凍結(jié)在 99,然后測(cè)試其他選項(xiàng)。
Chrome 緩解
Chrome 版本中報(bào)告的 User-Agent 字符串遵循該模式: ...(主要版本號(hào)_次要版本號(hào)_構(gòu)建號(hào)_補(bǔ)丁號(hào))。
目前在 Chrome 中的備用方案是直接將 User-Agent 字符串中的主要版本號(hào)凍結(jié)在 99,然后在次要版本部分報(bào)告真正的主要版本號(hào)(相關(guān)代碼已經(jīng)登陸)。如果使用備份計(jì)劃,則 Chrome 101 版本 的 User-Agent 字符串將如下所示:99.101.4988.0 ,99
由于 Chrome UA 字符串中的次要版本號(hào)很長一段時(shí)間都是 0,所以 Chrome 還在進(jìn)行實(shí)驗(yàn),以確保次要版本號(hào)部分寫三位數(shù)的值不會(huì)導(dǎo)致 Bug。
Chrome 團(tuán)隊(duì)將根據(jù)報(bào)告的問題的數(shù)量和嚴(yán)重程度決定是否使用備份選項(xiàng)。
用戶可參與測(cè)試
在 Chrome 和 Firefox Nightly 中,用戶也可以手動(dòng)把瀏覽器的版本號(hào)改成 100 ,然后測(cè)試日常使用有沒有問題。
Firefox Nightly:
- 打開 Firefox Nightly 的設(shè)置菜單。
- 搜索“Firefox 100”,然后選中“Firefox 100 User-Agent String”選項(xiàng)。
Chrome:
(1)URL 欄輸入 chrome://flags/#force-major-version-to-100
(2)將選項(xiàng)設(shè)置為“啟用”。
- 如果你是網(wǎng)站維護(hù)者,請(qǐng)使用 Chrome 和 Firefox 100 測(cè)試網(wǎng)站,檢查 User-Agent 解析代碼和庫,并確保它們能夠處理三位數(shù)的版本號(hào),在此可查看目前正在受影響的網(wǎng)站模式。
- 如果你開發(fā)一個(gè) User-Agent 解析庫,添加測(cè)試來解析大于等于 100 的版本號(hào)。瀏覽器廠商早期的測(cè)試表明,最新版本的 UA 解析庫都可以正確處理它。但如果你有舊版本的解析庫,是時(shí)候檢查并升級(jí)了。
- 如果你是瀏覽器用戶,在瀏覽網(wǎng)頁時(shí)發(fā)現(xiàn)主要版本 100 有任何問題,請(qǐng)?jiān)?webcompat.com 上提交報(bào)告。