Chrome是如何成功的?

1 評(píng)論 7128 瀏覽 10 收藏 20 分鐘

幾乎所有JavaScript開(kāi)發(fā)者每天都在使用Chrome,大家知道它是如何成為瀏覽器霸主的嗎?

Google為什么要做瀏覽器?

其實(shí),Google的聯(lián)合創(chuàng)始人Larry Page和Sergey Brin早在2001年就想做瀏覽器,但是當(dāng)時(shí)的CEO施密特一直反對(duì),因?yàn)閺念^開(kāi)發(fā)一個(gè)瀏覽器的成本太高了,不是一個(gè)創(chuàng)業(yè)公司可以承受的。

因此,Google直到2006年,公司已經(jīng)上市2年了,才開(kāi)始做瀏覽器,秘密開(kāi)發(fā)了2年,Chrome才正式發(fā)布。

Google真正開(kāi)始開(kāi)發(fā)Chrome是2006年,當(dāng)時(shí)IE的市場(chǎng)占有率高達(dá)80%,F(xiàn)irefox大概是10%。

自從擊敗Netscape之后,IE似乎可以高枕無(wú)憂了。如果那時(shí)候有人要做一個(gè)瀏覽器,大多數(shù)人都會(huì)質(zhì)疑,還需要多個(gè)瀏覽器干嘛?IE和Firefox又不是不能用。

但是,2006年時(shí)的Web早已經(jīng)不再是簡(jiǎn)單的靜態(tài)頁(yè)面,Gmail、Youtube、Google Maps,F(xiàn)acebook這些復(fù)雜的Web應(yīng)用已經(jīng)出現(xiàn)一段時(shí)間了,傳統(tǒng)瀏覽器在架構(gòu)、性能以及穩(wěn)定性上已經(jīng)逐漸不再適用了,這時(shí)正是需要一款更加強(qiáng)大的瀏覽器來(lái)滿足用戶與Web開(kāi)發(fā)者的需求。

Google所做的最重要的事情,就是對(duì)成千上萬(wàn)的網(wǎng)頁(yè)進(jìn)行排序,所以它存在的意義是基于網(wǎng)頁(yè)的。

而一個(gè)更快、更好的瀏覽器,可以促進(jìn)Web技術(shù)的發(fā)展,網(wǎng)頁(yè)會(huì)越來(lái)越多,越來(lái)越好,用戶花在Web上的時(shí)間越來(lái)越多,這對(duì)Google是有益。因此,Google要做瀏覽器,不只是想要一個(gè)搜索入口那么簡(jiǎn)單。

Google希望通過(guò)Chrome瀏覽器來(lái)促進(jìn)Web技術(shù)的發(fā)展,從而讓自己受益,這也不是什么秘密,Chrome團(tuán)隊(duì)的人都是這么說(shuō)的,Google現(xiàn)在的CEO是Sundar Pichai,他當(dāng)年發(fā)布Chrome的時(shí)候是這樣說(shuō)的:

We hope to collaborate with the entire community to help drive the web forward.

這樣假大空的話當(dāng)年大概沒(méi)幾個(gè)人相信,但是這不重要,重要的是Google真的做到了,Chrome確實(shí)推動(dòng)了Web技術(shù)的發(fā)展。沒(méi)有Chrome的話,現(xiàn)在的Web技術(shù)大概確實(shí)得落后不少。

如果Google只是想要一個(gè)搜索入口,它可以收購(gòu)一個(gè)瀏覽器,或者基于開(kāi)源瀏覽器套一個(gè)殼,做一下賬戶系統(tǒng)就夠了,再通過(guò)Google網(wǎng)站進(jìn)行推廣。

國(guó)內(nèi)各個(gè)大廠的瀏覽器都是基于Chrome的開(kāi)源版本Chromium實(shí)現(xiàn)的,某個(gè)瀏覽器甚至直接打包了Chrome的安裝包。

既然Google想做的事情是推動(dòng)Web技術(shù)發(fā)展,如果沿用舊的思想和技術(shù)的話,顯然是做不到的。于是,他們?cè)O(shè)計(jì)了一個(gè)多進(jìn)程的瀏覽器架構(gòu),重新寫(xiě)了一個(gè)性能彪悍的JavaScript引擎V8,后來(lái)又基于Webkit做了一個(gè)新的渲染引擎Blink。

不妨這樣說(shuō),Google與國(guó)內(nèi)的搜索引擎巨頭們的還差一個(gè)Chrome瀏覽器。后者看到的是搜索流量帶來(lái)的商業(yè)價(jià)值以及重新開(kāi)發(fā)一個(gè)瀏覽器的巨大成本,而前者看到了Web技術(shù)發(fā)展對(duì)搜索引擎本身的長(zhǎng)遠(yuǎn)價(jià)值。

Chrome就一定能成功嗎?

Google終于決定做瀏覽器了,但這事能不能做成,其實(shí)也不一定。和每一個(gè)大公司一樣,Google失敗的項(xiàng)目遠(yuǎn)遠(yuǎn)多于成功的項(xiàng)目,大家不妨看看Killed by Google里面的列表。

Google確實(shí)有很多非常成功的產(chǎn)品,比如Android,Youtube,Google Maps,DeepMind,但是它們其實(shí)都是收購(gòu)來(lái)的。Chrome算是Google為數(shù)不多的真正從零開(kāi)始打造出來(lái)的產(chǎn)品。

下面這張圖是Chrome發(fā)布時(shí)的照片:

圖片來(lái)源:Niall Kennedy

照片中從左至右是Larry Page, Brian Rakowski, Sundar Pichai, Sergey Brin, Darin Fisher, Lars Bak和Ben Goodger,他們都是Chrome瀏覽器最關(guān)鍵人物,也都因?yàn)镃hrome的成功而收益不菲。

  • Larry Page和Sergey Brin是Google的創(chuàng)始人,他們一直希望做瀏覽器;
  • Sundar Pichai當(dāng)時(shí)是Google負(fù)責(zé)產(chǎn)品的副總裁,Chrome也在他的管理范圍之類,現(xiàn)在他是Google的CEO;
  • Brian Rakowski當(dāng)時(shí)是Chrome的產(chǎn)品經(jīng)理,現(xiàn)在是Google負(fù)責(zé)產(chǎn)品的副總裁;
  • Lars Bak是JavaScript引擎V8的負(fù)責(zé)人,曾長(zhǎng)期從事編程語(yǔ)言的虛擬機(jī)開(kāi)發(fā)工作;
  • Darin Fisher是Chrome最早期的開(kāi)發(fā)者,之前是Firefox的工程師,現(xiàn)在是Google負(fù)責(zé)Chrome的副總裁;
  • Ben Goodger是Chrome最早期的開(kāi)發(fā)者,之前是Firefox的工程師,現(xiàn)在的職級(jí)為Distinguished Engineer,僅次于Google Fellow以及Senior Google Fellow;

照片中大家都挺開(kāi)心的,秘密開(kāi)發(fā)了2年的Chrome終于發(fā)布了,但是他們能想到10年后Chrome可以占有接近70%的市場(chǎng)份額嗎?

下圖是2009年到2019年瀏覽器的市場(chǎng)份額變化,Chrome一路飆升,而一度壟斷市場(chǎng)的IE則剛好相反:

圖片來(lái)源:Visual Capitalist

不妨對(duì)比一下1994年到2008年的瀏覽器市場(chǎng)份額,IE通過(guò)免費(fèi)捆綁Windows把Netscape整垮了,巔峰時(shí)期的市場(chǎng)占有率高達(dá)96%:

圖片來(lái)源:Wired

瀏覽器一直是一個(gè)硝煙四起的戰(zhàn)場(chǎng),因此瀏覽器市場(chǎng)份額的變化多少有點(diǎn)戲劇性。

Chrome為什么會(huì)成功?

Chrome為什么會(huì)這么成功呢?Google創(chuàng)始人Larry Page是這樣說(shuō)的:

Chrome has hundreds of millions of happy users and is growing fast thanks to its speed, simplicity and security.

Chrome很快,很簡(jiǎn)單,也很安全,所以它成功了,這是Page的觀點(diǎn)。

真的是這樣嗎?

其實(shí)也差不多,不過(guò)還少了一點(diǎn),stability,即穩(wěn)定性。Chrome的產(chǎn)品哲學(xué)是一共是4個(gè)S:Speed, Security, Stability以及Simplicity。其實(shí),這4個(gè)S適用于所有互聯(lián)網(wǎng)產(chǎn)品,要做到話也不是那么容易。

說(shuō)人話,Chrome究竟有哪些不一樣呢?

  1. 簡(jiǎn)潔的用戶界面(Simplicity)
  2. 多進(jìn)程架構(gòu)(Stability, Speed, Security)
  3. JavaScript引擎V8(Speed)
  4. 渲染引擎Blink(Speed)

用戶界面的Simplicity其實(shí)不難做到,現(xiàn)在很多瀏覽器和Chrome看起來(lái)也差不多,只是Chrome率先簡(jiǎn)化了瀏覽器的界面。

這類似于iPhone發(fā)布之后,大家明白了一個(gè)簡(jiǎn)單的道理,原來(lái)手機(jī)只需要一塊屏幕就夠了,不需要那么多按鍵,后來(lái)所有智能手機(jī)基本上都長(zhǎng)得一樣了…

多進(jìn)程架構(gòu)、V8引擎以及Blink引擎都是非常硬核的技術(shù),不是一般開(kāi)發(fā)者可以做到的,就算是現(xiàn)在也很少有人或者公司去嘗試做這個(gè),所以現(xiàn)在國(guó)內(nèi)外很多瀏覽器都是基于Chromium實(shí)現(xiàn)的。

我想大家心里都清楚,要想這3點(diǎn)上超越Chrome,可能性非常小。

Blink渲染引擎的優(yōu)化對(duì)提高Web性能也至關(guān)重要,只是Chrome剛開(kāi)始用的是Webkit,我會(huì)在以后的博客中詳細(xì)介紹Blink。

當(dāng)然,Chrome所做的創(chuàng)新遠(yuǎn)不只這么多,我列舉的4點(diǎn)是Chrome成功最關(guān)鍵的要素。

簡(jiǎn)潔的用戶界面

Chrome已經(jīng)發(fā)布10多年了,但是它的界面其實(shí)沒(méi)怎么變過(guò):后退圖標(biāo),前進(jìn)圖標(biāo),刷新圖標(biāo),合并的地址欄與搜索框,書(shū)簽圖標(biāo),登陸圖標(biāo),設(shè)置圖標(biāo)……Chrome的界面非常簡(jiǎn)潔,沒(méi)有任何多余的元素。

2009年的Chrome是這樣的:

圖片來(lái)源:Gmail in 30 seconds

2019年的Chrome是這樣的:

Chrome發(fā)布時(shí),IE8也差不多在同一時(shí)期發(fā)布,但是它的界面就沒(méi)那么簡(jiǎn)潔了:

通常,用戶應(yīng)該不會(huì)去點(diǎn)擊“頁(yè)面”、“安全”、“工具”等選項(xiàng),其實(shí)它們完全可以隱藏起來(lái)。Chrome的很多選項(xiàng)都是隱藏在設(shè)置選項(xiàng)里面,其實(shí)更加科學(xué)。

Chrome是第一個(gè)將地址欄與搜索框合并的瀏覽器,合并的框被稱為Omnibox,用戶既可以輸入地址,也可以搜索關(guān)鍵字。當(dāng)用戶輸入時(shí),Chrome還會(huì)進(jìn)行實(shí)時(shí)推薦用戶可能要訪問(wèn)的網(wǎng)頁(yè)。

Chrome還把書(shū)簽欄給隱藏了,這對(duì)于重度書(shū)簽用戶(比如我)來(lái)說(shuō)帶來(lái)一些不便,但是這也讓界面又簡(jiǎn)潔了很多。

很多瀏覽器的書(shū)簽欄不僅沒(méi)有隱藏,還會(huì)添加很多莫名其妙的默認(rèn)書(shū)簽,甚至很多軟件安裝時(shí)也會(huì)給瀏覽器添加一些書(shū)簽,而這些書(shū)簽其實(shí)很多用戶都不會(huì)訪問(wèn)。

合并地址欄和搜索框,隱藏書(shū)簽欄,這樣做不只是讓用戶界面更加簡(jiǎn)潔,還可以培養(yǎng)用戶的搜索習(xí)慣,讓用戶不在需要記住特定的網(wǎng)站。

Chrome與IE8的Tab位置是不一樣的,Chrome的Tab在上面,而IE8的Tab在下面,這個(gè)區(qū)別似乎沒(méi)那么重要,不過(guò)也沒(méi)那么簡(jiǎn)單。Tab是Chrome用戶界面最重要的元素,每一個(gè)Tab使用獨(dú)立的進(jìn)程,Tab可以拖拽出來(lái)作為獨(dú)立的窗口,相當(dāng)于一個(gè)獨(dú)立的應(yīng)用。

Chrome的設(shè)計(jì)哲學(xué)是”Content, not Chrome”,因此它們Tab置頂,把一切可以省略的東西都去掉,比如搜索框、狀態(tài)欄、書(shū)簽欄以及各種設(shè)置的快捷方式,盡量讓每一個(gè)Tab看起來(lái)像一個(gè)獨(dú)立的應(yīng)用:郵件、視頻、社交或者購(gòu)物等,不要讓多余的瀏覽器元素影響用戶體驗(yàn),讓用戶專注于Web應(yīng)用本身,讓W(xué)eb應(yīng)用越來(lái)越重要,這不不正是Google的陽(yáng)謀嗎?

Chrome的產(chǎn)品哲學(xué)與iPhone以及微信本質(zhì)是一樣的,都是極簡(jiǎn)主義,這個(gè)地球人都知道,但是沒(méi)有多少產(chǎn)品可以真正做到。為什么呢?因?yàn)橐龅綐O簡(jiǎn)主義,需要深刻思考用戶需求以及產(chǎn)品價(jià)值。

多進(jìn)程架構(gòu)

Chrome的每一個(gè)Tab和插件,都使用獨(dú)立的進(jìn)程。這樣可以提高瀏覽器的性能、安全性以及穩(wěn)定性

  • 充分利用多核CPU,不同的進(jìn)程可以使用不同的CPU核運(yùn)行;
  • 便于限制Tab與插件進(jìn)程的權(quán)限,減少安全隱患;
  • 當(dāng)某一個(gè)Tab的頁(yè)面崩潰了,不會(huì)導(dǎo)致其他Tab崩潰,整個(gè)瀏覽器還可以正常使用;

多進(jìn)程架構(gòu)借鑒了現(xiàn)代操作系統(tǒng)的設(shè)計(jì)思想,瀏覽器不再是一個(gè)簡(jiǎn)單的應(yīng)用,它是一個(gè)平臺(tái),可以用于獨(dú)立運(yùn)行各種各樣的Web應(yīng)用。

使用Chrome的任務(wù)管理器,可以查看每一個(gè)Tab和插件進(jìn)程所使用的CPU、內(nèi)存已經(jīng)網(wǎng)絡(luò)。這樣可以幫助Web開(kāi)發(fā)者優(yōu)化代碼,高效利用計(jì)算機(jī)資源。

既然多進(jìn)程架構(gòu)有這么多好處,那為什么以前的瀏覽器采用單進(jìn)程架構(gòu)呢?因?yàn)镮E、Firefox等瀏覽器誕生時(shí),Web還非常簡(jiǎn)單,大多是靜態(tài)頁(yè)面,單進(jìn)程就夠用了,而且當(dāng)年也沒(méi)有什么多核CPU。

從單進(jìn)程架構(gòu)切換到多進(jìn)程架構(gòu)是一個(gè)非常復(fù)雜的過(guò)程,F(xiàn)irefox從2009年到2017年花了整整8年時(shí)間才完成切換。

從這一點(diǎn)來(lái)說(shuō),F(xiàn)irefox落后了Chrome接近10年。這倒不是因?yàn)镃hrome的工程師特別厲害,而是因?yàn)镃hrome從一開(kāi)始就設(shè)計(jì)了多進(jìn)程架構(gòu),沒(méi)有什么技術(shù)債。

JavaScript引擎V8

Chrome的性能優(yōu)異,很大程度上要?dú)w功于他們的重新的開(kāi)發(fā)的JavaScript引擎V8。V8引擎可以將JS代碼編譯為高效的匯編代碼,同時(shí)還要負(fù)責(zé)執(zhí)行代碼、分配內(nèi)存以及垃圾回收。

V8引擎的命名靈感來(lái)自超級(jí)性能車的V8引擎,敢于這樣命名確實(shí)需要一些實(shí)力,它性能確實(shí)一直在穩(wěn)步提高,下面是使用Speedometer benchmark的測(cè)試結(jié)果:

圖片來(lái)源:https://v8.dev

JavaScript是動(dòng)態(tài)的,且沒(méi)有類型,這會(huì)給V8引擎編譯JS代碼時(shí)帶來(lái)很多麻煩。不過(guò)V8引擎可以記錄代碼第一次執(zhí)行時(shí)的類型信息,當(dāng)代碼第二次執(zhí)行時(shí),則可以根據(jù)記錄的類型信息生成優(yōu)化的匯編代碼。

另外,V8引擎還會(huì)為Object生成動(dòng)態(tài)的hidden class,用來(lái)記錄Object的結(jié)構(gòu),以提高屬性的訪問(wèn)速度。

V8引擎的垃圾回收算法也非常強(qiáng)大,可以大幅減少內(nèi)存使用。最近有人對(duì)比了一下3中不同類型的JS引擎JavaScriptCore、Hermes以及V8在React Native應(yīng)用中的內(nèi)存使用情況,發(fā)現(xiàn)V8的內(nèi)存使用量明顯低于其他引擎,且非常平穩(wěn):

圖片來(lái)源:Bhaskar gyan vardhan

V8引擎不只是讓Chrome變快,它也讓JavaScript變得更加強(qiáng)大,讓JavaScript生態(tài)系統(tǒng)變得異常繁榮。Node.js也是基于V8引擎的,因?yàn)橛蠳ode.js,才有了數(shù)量龐大的NPM模塊,才有了各種各樣的JavaScript開(kāi)發(fā)框架和工具。

Chrome會(huì)成為下一個(gè)IE嗎?

也許是樹(shù)大招風(fēng),最近批評(píng)Chrome的聲音越來(lái)越多了,有人甚至說(shuō)Chrome會(huì)成為下一個(gè)IE6。個(gè)人覺(jué)得這個(gè)有點(diǎn)危言聳聽(tīng)。

Chrome從一開(kāi)始就是開(kāi)源的,”Talk is cheap, show me the code”,如果實(shí)在對(duì)Chrome有啥特別不爽的地方,其實(shí)可以去改代碼,或者fork一個(gè)更好的版本。

Chrome從一直是尊重技術(shù)標(biāo)準(zhǔn)的,它在發(fā)布的時(shí)候就通過(guò)了Acid測(cè)試,更重要的是,它一直在推動(dòng)HTML5、CSS、ECMAScript、HTTPS, HTTP/2, WebAssembly, Service Workers, Source Map等Web相關(guān)技術(shù)標(biāo)準(zhǔn)的發(fā)展,大家可以在各個(gè)標(biāo)準(zhǔn)提案中看到Google工程師的身影。

有人說(shuō)Google工程師最大的問(wèn)題就是喜歡提新的技術(shù)標(biāo)準(zhǔn),但是有標(biāo)準(zhǔn)比沒(méi)有標(biāo)準(zhǔn)要好太多了,國(guó)內(nèi)各個(gè)大廠小程序做了快3年了,至今連個(gè)標(biāo)準(zhǔn)都沒(méi)有,各玩各的,這樣做導(dǎo)致整個(gè)小程序行業(yè)一起加班,一起重復(fù)勞動(dòng)。

最嚴(yán)重的問(wèn)題在于,沒(méi)有標(biāo)準(zhǔn)會(huì)制約小程序的進(jìn)一步發(fā)展,大家無(wú)法給用戶提供最好的產(chǎn)品。

開(kāi)放繁榮的Web符合Google的長(zhǎng)遠(yuǎn)利益,因?yàn)镚oogle是靠Web廣告賺錢的;但是Web對(duì)于Microsoft來(lái)說(shuō)一直就沒(méi)有太大商業(yè)價(jià)值,因?yàn)镸icrosoft賣的是操作系統(tǒng);按照吳軍老師的基因論,IE之所以失敗是Microsoft的基因決定的,而Google的基因決定了它必須把Chrome做好。

從目前的情況來(lái)看,Chrome依然會(huì)保持簡(jiǎn)潔的界面,性能也會(huì)一直提高,這樣的話,用戶和開(kāi)發(fā)者也沒(méi)有多少動(dòng)力去換瀏覽器。我已經(jīng)用了7年Chrome了,未來(lái)還會(huì)繼續(xù)用下去,那你呢?

大家還有啥不太清楚的地方?不妨留言一下,我可以研究一下,然后再與大家分享。我是Fundebug的技術(shù)負(fù)責(zé)人,一個(gè)對(duì)JS又愛(ài)又恨的程序員。

#參考#

 

作者:Fundebug的技術(shù)總監(jiān),歡迎添加微信交流:KiwenLau

本文由 @Fundebug 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 牛逼的谷歌

    來(lái)自浙江 回復(fù)