瀏覽器是怎樣工作的(一):基礎(chǔ)知識

前兩天看到一篇不錯的英文文章,叫做How browsers work,該文概要的介紹了瀏覽器從頭到尾的工作機制亥揖,包括HTML等的解析,DOM樹的生成圣勒,節(jié)點與CSS的渲染等等费变,對于想學(xué)習(xí)瀏覽器源碼的同學(xué)來說,實在是很棒的一篇科普文章灾而。盡管對于每部分胡控,該文的描述并不足夠深入,但綜合來講旁趟,即使沒興趣學(xué)瀏覽器源碼昼激,也還是有一些值的學(xué)習(xí)的思想在里面的庇绽,可以權(quán)當(dāng)開拓下視野,有益無害橙困。

于是瞧掺,我想分節(jié)挑重點翻譯一下與大家分享。以下為譯文:

我們要討論的瀏覽器

當(dāng)今主流瀏覽器有五類: Internet Explorer, Firefox, Safari, Chrome 以及 Opera凡傅。 我會基于開源瀏覽器 Firefox, Chrome 與 Safari(部分開源)來舉例說明辟狈。 按照W3C 瀏覽器統(tǒng)計, 當(dāng)今(2009年10月), Firefox, Safari 及 Chrome 的總占有率已接近 60%,這是非诚孽危可觀的哼转。

瀏覽器的主要功能

瀏覽器的主要功能是展示網(wǎng)頁資源,也即請求服務(wù)器并將結(jié)果顯示在瀏覽器窗口中槽华。資源的格式一般是HTML壹蔓,但也有PDF、圖片等其它各種格式猫态。資源的定位由URL來實現(xiàn)佣蓉。更多細(xì)節(jié)請參考“網(wǎng)絡(luò)”一節(jié)。

瀏覽器釋與展現(xiàn)HTML文件的方式是參照HTML與CSS規(guī)范來的亲雪,這些規(guī)范由W3C (World Wide Web Consortium) Web標(biāo)準(zhǔn)化組織來維護勇凭。 當(dāng)前HTML版本是 4 (http://www.w3.org/TR/html401/),HTML5正在進(jìn)行中义辕。當(dāng)前CSS版本為2 (http://www.w3.org/TR/CSS2/)虾标,同樣,版本3進(jìn)行中终息。

過去幾年里夺巩,各版本瀏覽器有許多各自的擴展贞让,這使網(wǎng)頁作者很難寫出兼容性好的內(nèi)容周崭。如今這一嚴(yán)重的兼容性問題已經(jīng)開始好轉(zhuǎn),各種瀏覽器都開始兼容標(biāo)準(zhǔn)規(guī)范喳张。

各瀏覽器的用戶接口有很多相同的地方续镇,下面是一些常用的用戶接口:

用于輸入URI的地址欄

前進(jìn)后退按鈕

書簽選項

刷新停止按鈕,用于控制頁面加載

主頁按鈕

很奇怪的是销部,瀏覽器的用戶接口并沒有寫進(jìn)任何規(guī)范中摸航,這種極大的相似性只是在多年的實踐經(jīng)驗以及瀏覽器之間的相互借鑒中形成的。HTML5規(guī)范沒有規(guī)定瀏覽器必須有哪些交互元素舅桩,但是列出了一些通用元素酱虎,比如地址欄, 狀態(tài)欄和工具欄。 當(dāng)然擂涛,特定瀏覽器有自己獨有的特性读串,如Firefox的下載管理器。更多內(nèi)容請參考用戶接口一節(jié)。

瀏覽器的上層結(jié)構(gòu)

瀏覽器的主要概念如下 (1.1):

用戶接口 – 包括地址欄恢暖,前進(jìn)后退排监,書簽菜單等窗口上除了網(wǎng)頁顯示區(qū)域以外的部分。

瀏覽器引擎 – 查詢與操作渲染引擎的接口杰捂。

渲染引擎 – 負(fù)責(zé)顯示請求的內(nèi)容舆床。比如請求到HTML, 它會負(fù)責(zé)解析HTML 與 CSS 并將結(jié)果顯示到窗口中。

網(wǎng)絡(luò) – 用于網(wǎng)絡(luò)請求, 如HTTP請求嫁佳。它包括平臺無關(guān)的接口和各平臺獨立的實現(xiàn)挨队。

UI后端 – 繪制基礎(chǔ)元件,如組合框與窗口蒿往。它提供平臺無關(guān)的接口瞒瘸,內(nèi)部使用操作系統(tǒng)的相應(yīng)實現(xiàn)。

JavaScript解釋器熄浓。用于解析執(zhí)行JavaScript代碼情臭。

數(shù)據(jù)存儲。這是一個持久層赌蔑。瀏覽器需要把所有數(shù)據(jù)存到硬盤上俯在,如cookies。新的HTML規(guī)范 (HTML5) 規(guī)定了一個完整(雖然輕量級)的瀏覽器中的數(shù)據(jù)庫:’web database’娃惯。

圖1: 瀏覽器的主要概念

需要注意的是跷乐,與其它瀏覽器不同,chrome使用多個渲染引擎實例趾浅,每個Tab一個愕提,每個Tab都是一個獨立進(jìn)程。

我會拿出一個章節(jié)來介紹每塊內(nèi)容皿哨。

組件間的通信

Firefox 與 Chrome 開發(fā)了一種特殊的通信架構(gòu)浅侨,這會在一個特殊章節(jié)討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末证膨,一起剝皮案震驚了整個濱河市如输,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌央勒,老刑警劉巖不见,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崔步,居然都是意外死亡稳吮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門井濒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灶似,“玉大人慎陵,你說我怎么就攤上這事∮靼拢” “怎么了席纽?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長撞蚕。 經(jīng)常有香客問我润梯,道長,這世上最難降的妖魔是什么甥厦? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任纺铭,我火速辦了婚禮,結(jié)果婚禮上刀疙,老公的妹妹穿的比我還像新娘舶赔。我一直安慰自己,他們只是感情好谦秧,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布竟纳。 她就那樣靜靜地躺著,像睡著了一般疚鲤。 火紅的嫁衣襯著肌膚如雪锥累。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天集歇,我揣著相機與錄音桶略,去河邊找鬼。 笑死诲宇,一個胖子當(dāng)著我的面吹牛际歼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姑蓝,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼鹅心,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了它掂?” 一聲冷哼從身側(cè)響起巴帮,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤溯泣,失蹤者是張志新(化名)和其女友劉穎虐秋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垃沦,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡客给,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肢簿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片靶剑。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜻拨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桩引,到底是詐尸還是另有隱情缎讼,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布坑匠,位于F島的核電站血崭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏厘灼。R本人自食惡果不足惜夹纫,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望设凹。 院中可真熱鬧舰讹,春花似錦、人聲如沸闪朱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奋姿。三九已至桶错,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胀蛮,已是汗流浹背院刁。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粪狼,地道東北人退腥。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像再榄,于是被迫代替她去往敵國和親狡刘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容