Safari瀏覽器正在殺死Web
時(shí)至今日,IE 6 的種種遺留問題仍然困擾著不少 Web 開發(fā)人員。這款雖然經(jīng)典但卻毛病多多的瀏覽器大大降低了開發(fā)者的生活質(zhì)量,甚至有激進(jìn)的觀點(diǎn)認(rèn)為它幾乎毀掉了整個(gè)互聯(lián)網(wǎng)??傊琁E 真的很差勁,它相當(dāng)于是逼著 Web 開發(fā)者在冰天雪地中爬坡前行……經(jīng)歷過的估計(jì)都懂。
但就算沒經(jīng)歷過那個(gè)時(shí)代,如今的 Web API 開發(fā)人員也面臨著類似的難題——只不過這一次,難題來自蘋果。
蘋果的 Safari 瀏覽器在支持 Web 功能方面遠(yuǎn)遠(yuǎn)落后于其他競(jìng)爭(zhēng)對(duì)手,這種落后到底達(dá)沒達(dá)到當(dāng)初 IE 的“高度”仍有爭(zhēng)議,但不少人已經(jīng)把 Safari 視為 IE“精神”留下的現(xiàn)實(shí)映射。而且可以肯定的是,Safari 當(dāng)中的 WebKit 引擎確實(shí)遠(yuǎn)不及其他瀏覽器方案。根據(jù) Web Platform Tests 公布的儀表板,基于 Chrome 的瀏覽器能夠支持 94% 的測(cè)試套件、Firefox 支持 91%,而 Safari 僅支持 71%。在桌面端,問題似乎不大;畢竟用戶可以隨時(shí)切換到最經(jīng)典的谷歌 Chrome(甚至 Vivaldi)。
但是,在 iOS 設(shè)備上,情況就沒那么簡(jiǎn)單了。
根據(jù)蘋果 App Store 中發(fā)布的規(guī)定,“用于瀏覽網(wǎng)頁(yè)的應(yīng)用必須使用適當(dāng)?shù)?WebKit 框架與 WebKit JavaScript?!睋Q句話說,無(wú)論選擇 Safari 還是 Chrome,iPhone 用戶們實(shí)際上使用的都是 Safari/WebKit 這對(duì)弱智組合。
蘋果在 iOS 上壟斷了瀏覽器選擇權(quán),這是微軟在 IE 身上永遠(yuǎn)沒能實(shí)現(xiàn)的終極目標(biāo)。在 Windows 中,用戶至少還可以安裝 Firefox。但即使在 iOS 上使用其他瀏覽器、包括 Firefox,我們用到的在本質(zhì)上也仍然是 WebKit?;蛘哒f,只要大家選擇了 iOS 設(shè)備,那么 Safari 就將永遠(yuǎn)伴你左右。
而真正讓 Web 開發(fā)者們頭疼的,則是蘋果緩慢的開發(fā)周期。蘋果最快也要每六個(gè)月左右才更新一次 Safari。而基于 Blink 的 Chrome 系瀏覽器則每六周更新一次(很快將進(jìn)一步縮短為每四周更新),F(xiàn)irefox 每四周更新一次,Brave 甚至每三周就迎來一波更新。如此一來,蘋果不僅是添加新功能的速度太慢,這樣的開發(fā)周期也讓簡(jiǎn)單的 bug 修復(fù)成果得等上好久才能正式登陸用戶設(shè)備,而某些受到 Safari bug 影響的網(wǎng)站可能需要等待一年才能解決問題。
再深入觀察,我們會(huì)發(fā)現(xiàn) Web Platform Tests 數(shù)據(jù)還暴露出 Safari 的另一大短板——即使 WebKit 能夠?qū)崿F(xiàn)某項(xiàng)功能,其效果也往往不夠完整。以漸進(jìn)式 Web 應(yīng)用程序(PWA)為例,其目標(biāo)是希望能讓 Web 應(yīng)用的使用體驗(yàn)無(wú)限接近于原生移動(dòng)應(yīng)用。
用于構(gòu)建 PWA 的相關(guān) API 可以實(shí)現(xiàn)全屏運(yùn)行(無(wú)瀏覽器 UI)、發(fā)送通知與警報(bào)、離線狀態(tài)運(yùn)行以及通過主屏幕圖標(biāo)啟動(dòng)等等。目前最具知名度的 PWA 案例當(dāng)數(shù) Twitter 與 Uber。
蘋果已經(jīng)為開發(fā)人員實(shí)現(xiàn)了構(gòu)建 PWA 所需要的大部分功能,但其中仍有著不少局限性。比如蘋果還沒添加對(duì)發(fā)送通知和主屏幕應(yīng)用圖標(biāo)的支持,因此本質(zhì)上可以說 Safari 還沒有實(shí)現(xiàn)某些真正能讓網(wǎng)站用起來像原生應(yīng)用的核心功能。
也正是因?yàn)樘O果這種故意削弱 WebKit 來護(hù)著自家 App Store 業(yè)務(wù)的行為,引發(fā)了開發(fā)領(lǐng)域的激烈爭(zhēng)論。因?yàn)槿绻O果老老實(shí)實(shí)推出所有支持功能,開發(fā)者就能構(gòu)建起更好的 Web 應(yīng)用,那到時(shí)候沒人買原生應(yīng)用了怎么辦……蘋果在 iOS App Store 中可是擁有 30% 的傭金抽成。
熱衷于做 Web 應(yīng)用的開發(fā)者們對(duì)上述問題自然是非常關(guān)心的,但蘋果則不然——他們是世界上財(cái)力最雄厚的企業(yè)之一,并不擔(dān)心自己的倒行逆施行為會(huì)惹惱 Web 開發(fā)者群體。更重要的是,蘋果在保護(hù)自身利益的同時(shí),還把新 API 支持功能的缺失解釋成保護(hù)用戶隱私……打著這面大旗,其他人也確實(shí)不好多說什么。
Safari 的支持者以及蘋果本身都堅(jiān)定認(rèn)為,之所以不支持那些新型 API,是為了避免開發(fā)者訪問用戶的 USB 端口、藍(lán)牙裝置、電池狀態(tài)及 NFC 傳感器等,進(jìn)而導(dǎo)致廣告商利用這些信息不斷侵蝕本已很脆弱的互聯(lián)網(wǎng)隱私。就算不擔(dān)心隱私,這些 API 也會(huì)減弱手機(jī)的電池續(xù)航能力。
我本人并不是 iOS 用戶,但蘋果在隱私問題上的堅(jiān)定立場(chǎng)確實(shí)讓我相當(dāng)心動(dòng)。
我承認(rèn),我非常討厭現(xiàn)代網(wǎng)絡(luò),但我對(duì)隱私問題也不太擔(dān)心,畢竟使用移動(dòng)設(shè)備本身就代表著與隱私的背離。 我重視隱私,但如今網(wǎng)站可靠性低、速度慢而且對(duì)用戶抱有敵意等整體趨勢(shì)已經(jīng)讓這種重視毫無(wú)意義。
我非常不喜歡 JavaScript 驅(qū)動(dòng)的 Web API 所帶來的體驗(yàn),所以已經(jīng)開始在瀏覽過程中禁用 JavaScript,這樣網(wǎng)絡(luò)能瞬間恢復(fù)最初漂亮、簡(jiǎn)潔的狀態(tài),而蘋果肯定特別欣賞我這樣的用戶。我用過很多無(wú)需 JavaScript 即可加載的網(wǎng)站,而且堅(jiān)決不碰那些強(qiáng)制要求使用 JavaScript 的站點(diǎn)。沒錯(cuò),既然 Invidious(YouTube 的開源前端替代產(chǎn)品)都能在無(wú)需 JavaScript 的前提下加載 YouTube 內(nèi)容,為什么 YouTube 自己不行?我不在乎具體理由,但寫了個(gè)腳本保證自己總會(huì)被重新定向至 Invidious 或者 PeerTube。
我想說的是,在這個(gè)問題上我是支持蘋果的;但我也承認(rèn),蘋果這種 Safari 落后性源自保護(hù)用戶隱私的說法壓根站不住腳。雖然我覺得蘋果不會(huì)非常擔(dān)心 Web 開發(fā)者能損害到 App Store 的根本利益,但其中的種種負(fù)面可能性也確實(shí)不得不防。于是,蘋果出于利益做出了選擇,再把它強(qiáng)行解釋成是在保護(hù)用戶隱私。
這些新 API 正在快速入駐其他瀏覽器,所以在一段時(shí)間之后,微軟 IE 當(dāng)初的慘劇估計(jì)會(huì)重新上演。而大家也都清楚故事的結(jié)局:微軟輸了,其他瀏覽器都在快速發(fā)展,只有微軟 IE 徹底無(wú)人問津。
如果蘋果也沿著這條路走下去,那他們不僅會(huì)輸、甚至可能拖著整個(gè) Web 一起陷落。因?yàn)樘O果支持者們有一點(diǎn)是對(duì)的:如果蘋果愿意接受谷歌 Blink 的主宰,那其他競(jìng)爭(zhēng)廠商也只能服從。
那這位新“主宰者”的能力究竟如何?Web 開發(fā)者 Tim Perry 最近寫了一篇名為《Safari 不是在保護(hù) Web, 而是正殺死它》的文章,他表示,過去每種瀏覽器都會(huì)提供自己的擴(kuò)展 API。但如今,“Chrome 已經(jīng)深入人心,他們不斷提供更強(qiáng)大、更易于使用的擴(kuò)展 API,人氣也一路水漲船高。而 Firefox 與 Safari,它們放棄了自有 API,轉(zhuǎn)而接納 Chrome 的 API。這相當(dāng)于允許谷歌憑一己之力塑造 Web 擴(kuò)展標(biāo)準(zhǔn)?!笔堑模?dāng)沒人敢站出來對(duì)抗市場(chǎng)領(lǐng)導(dǎo)者時(shí),就會(huì)發(fā)生這種情況?!叭绻闆r沒有大的變動(dòng),那么谷歌的主宰之勢(shì)將愈演愈烈。這絕不是什么好消息?!?/p>
必須有人站出來阻擋谷歌和 Blink 瘋狂的擴(kuò)張腳步,確保不斷涌現(xiàn)的 API 真能給 Web 用戶帶來助益。這一點(diǎn)對(duì)蘋果用戶很重要,對(duì)谷歌用戶乃至 Web 開發(fā)者也同樣重要。
大部分現(xiàn)代 Web 功能的開發(fā)是悄然進(jìn)行的,期間鮮有爭(zhēng)論。Blink 開發(fā)者會(huì)在 Chrome 當(dāng)中以開發(fā)者標(biāo)記的形式發(fā)布這些新功能。這已經(jīng)成為一種共識(shí)和習(xí)慣,再要辯論或調(diào)整恐怕已經(jīng)非常困難。
我倒不是說蘋果的動(dòng)機(jī)就真有多高尚,但他們對(duì) Safari 的堅(jiān)持至少還能逼迫谷歌在統(tǒng)一 Web 標(biāo)準(zhǔn)流程的霸業(yè)上放緩腳步……但蘋果方面也得做出改變,否則 Safari 有可能步 IE 的后塵。
我的這些想法可能太過理想,但正如 Web 倡導(dǎo)者(前 Opera 布道師)Bruce Lawson 所言,“如果蘋果允許 Safari 真正參與競(jìng)爭(zhēng),對(duì)于 Web 開發(fā)者、企業(yè)、消費(fèi)者乃至整個(gè) Web 領(lǐng)域的健康狀況都將是個(gè)好消息?!?/p>
如果蘋果能夠調(diào)整功能開發(fā)當(dāng)中的透明度(減少)與加快響應(yīng)速度,那它一定可以更多地在新 API 的發(fā)展中發(fā)揮作用。而且如果蘋果真的擔(dān)心 API 影響到用戶隱私,就該用行動(dòng)捍衛(wèi)自己的觀點(diǎn)、反擊谷歌、拿出一套有競(jìng)爭(zhēng)力的 Chrome 替代品。這可能不容易,但卻是今后 Web 還能健康發(fā)展的唯一希望。
延伸閱讀:
https://www.theregister.com/2021/10/22/safari_risks_becoming_the_new_ie/
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取