認識我們的瀏覽器

瀏覽器毫無疑問是互聯(lián)網(wǎng)時代使用最廣泛的軟件,也是我們探索網(wǎng)絡世界的窗口填帽。本文將簡要介紹瀏覽器的組成和工作機制。 對于前端開發(fā)同學而言,唯有深入理解瀏覽器的工作機制才能編寫更加高效的代碼政模。

瀏覽器的主要組件

用戶界面:?包括地址欄,書簽等你可以看見和操作的部分蚂会,俗稱UI淋样。

瀏覽器引擎:?用來查詢及操作渲染引擎的接口。

渲染引擎:?用來顯示請求的內(nèi)容胁住,例如你訪問一個頁面趁猴,它負責解析服務器返回的html和css文本,并將解析后的結(jié)果顯示為我們看到的網(wǎng)頁彪见。比如目前廣泛使用的apple?safari?和?google?chrome的webkit渲染引擎(chrome后續(xù)的blink渲染引擎也是基于webkit的)儡司。

網(wǎng)絡:?用來完成網(wǎng)絡調(diào)用,例如http請求余指,它具有平臺無關的接口捕犬,可以在不同平臺上工作。

UI?后端:?用來繪制界面酵镜,具有不特定于某個平臺的通用接口碉碉,底層使用操作系統(tǒng)的用戶接口。

JS解釋器:?用來解釋執(zhí)行JS代碼笋婿,比如google?chrome?v8引擎誉裆,玩nodejs的同學不會陌生。

數(shù)據(jù)存儲:?屬于持久層缸濒,瀏覽器需要在硬盤中保存類似cookie的各種數(shù)據(jù)足丢。

各組成部分和依賴關系如下圖所示:

瀏覽器的功能

瀏覽器的主要功能是將用戶選擇的web資源呈現(xiàn)出來,它需要從服務器請求資源庇配,并將其顯示在瀏覽器窗口中斩跌,資源的格式通常是html,但也包括PDF捞慌、image及其他格式耀鸦。資源的位置用URI指定(Uniform?Resource?Identifier?統(tǒng)一資源標識符) 。

html和css規(guī)范中規(guī)定了瀏覽器解釋html文檔的方式,由W3C組織對這些規(guī)范進行維護袖订,W3C是負責制定web標準的組織氮帐。

對于前端開發(fā)者而言,瀏覽器還是開發(fā)調(diào)試web頁面和js腳本的利器洛姑。

網(wǎng)頁呈現(xiàn)流程

渲染引擎首先通過網(wǎng)絡獲得所請求文檔的內(nèi)容上沐,這些內(nèi)容通常是文本。

渲染引擎開始解析html楞艾,并將html標記解析為DOM樹参咙。接著,它解析外部css文件及文檔中style標簽中的樣式信息硫眯,這些樣式信息以及html中的可見性指令將被用來構建另一棵樹Render樹蕴侧。Render樹由一些包含有顏色和大小等屬性的矩形組成,它們將被按照正確的順序顯示到屏幕上两入。Render樹構建好了之后净宵,將會執(zhí)行布局過程,它將確定每個節(jié)點在屏幕上的確切坐標谆刨。

再下一步就是繪制塘娶,即遍歷Render樹,并使用UI后端層繪制每個節(jié)點痊夭。值得注意的是刁岸,這個過程是逐步完成的,為了更好的用戶體驗她我,渲染引擎將會盡可能早的將內(nèi)容呈現(xiàn)到屏幕上虹曙,并不會等到所有的html都解析完成之后再去構建和布局Render樹。它是解析完一部分內(nèi)容就顯示一部分內(nèi)容番舆,同時酝碳,可能還在通過網(wǎng)絡下載其余內(nèi)容。

渲染引擎是單線程的恨狈,除了網(wǎng)絡操作以外疏哗,幾乎所有的事情都在單一的線程中處理,在Firefox和Safari中禾怠,這是瀏覽器的主線程返奉,Chrome中這是tab的主線程。網(wǎng)絡操作由幾個并行線程執(zhí)行吗氏,并行連接的個數(shù)是受限的(通常是2-6個)芽偏。

文檔通過網(wǎng)絡請求獲取后的渲染流程如下:

通常前端性能優(yōu)化主要就是優(yōu)化渲染,比如我們常常聽說移動端首屏渲染弦讽,網(wǎng)站首頁打開時間等污尉,有興趣的同學可以深挖。

結(jié)語

當然隨著智能手機和移動互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)頁的呈現(xiàn)不單只發(fā)生在普通的瀏覽器中被碗,比如通過微信訂閱號看到這篇文章的某宪,這里微信通過嵌入瀏覽器渲染引擎?(基于webkit的qq瀏覽器引擎)?渲染和顯示訂閱號的web頁面。

本文作者:汪國超(點融黑幫)锐朴,點融網(wǎng)前端開發(fā),對新技術尤其是前端新技術特別有興趣缩抡,吃貨一枚, 喜歡旅游看美劇包颁。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市压真,隨后出現(xiàn)的幾起案子娩嚼,更是在濱河造成了極大的恐慌,老刑警劉巖滴肿,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岳悟,死亡現(xiàn)場離奇詭異,居然都是意外死亡泼差,警方通過查閱死者的電腦和手機贵少,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堆缘,“玉大人滔灶,你說我怎么就攤上這事『鸱剩” “怎么了录平?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缀皱。 經(jīng)常有香客問我斗这,道長,這世上最難降的妖魔是什么啤斗? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任表箭,我火速辦了婚禮,結(jié)果婚禮上钮莲,老公的妹妹穿的比我還像新娘免钻。我一直安慰自己,他們只是感情好臂痕,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布伯襟。 她就那樣靜靜地躺著,像睡著了一般握童。 火紅的嫁衣襯著肌膚如雪姆怪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音稽揭,去河邊找鬼俺附。 笑死,一個胖子當著我的面吹牛溪掀,可吹牛的內(nèi)容都是我干的事镣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼揪胃,長吁一口氣:“原來是場噩夢啊……” “哼璃哟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喊递,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤随闪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骚勘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铐伴,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年俏讹,在試婚紗的時候發(fā)現(xiàn)自己被綠了当宴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡泽疆,死狀恐怖户矢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情殉疼,我是刑警寧澤逗嫡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站株依,受9級特大地震影響驱证,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恋腕,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一酬诀、第九天 我趴在偏房一處隱蔽的房頂上張望啥寇。 院中可真熱鬧吨掌,春花似錦书妻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淤井,卻和暖如春布疼,著一層夾襖步出監(jiān)牢的瞬間摊趾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工游两, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砾层,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓贱案,卻偏偏與公主長得像肛炮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宝踪,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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