瀏覽器架構-原理篇

白霽發表於2019-02-20

1-瀏覽器架構-原理篇

我們都知道瀏覽器的功能,就是向伺服器傳送請求,然後在瀏覽器視窗中展示對應請求回來的網路資源。

那一個經典的前端面試題來說:「在瀏覽器位址列中輸入 url 到頁面展現的短短几秒內瀏覽器究竟做了什麼?」

我的記憶點中,更多的是如何查詢對應的 IP,然後傳送請求到伺服器,然後在渲染就結束了,不知你是不是這樣?

可往往我們好像忽視了,當代瀏覽器那些細微的互動點,如 tab 上的 spinner 的展現。為了能慢慢的理解上述的問題,我們首先一起理一下瀏覽器這款軟體中到底有有什麼吧。

當代現有的瀏覽器主要由使用者介面(The user interface)、瀏覽器引擎(The browser engine)、呈現引擎(The rendering engine)、網路(Networking)、JavasScript 直譯器(JavaScript interpreter)、使用者介面後端(UI backend)、資料儲存組成(Data storage)。

而這些元件的功能如下:

  1. 使用者介面 - 包括位址列、前進/後退按鈕、書籤選單等。除了瀏覽器主視窗顯示的您請求的頁面外,其他顯示的各個部分都屬於使用者介面。
  2. 瀏覽器引擎 - 在使用者介面和呈現引擎之間傳送指令。
  3. 渲染引擎 - 負責顯示請求的內容。如果請求的內容是 HTML,它就負責解析 HTML 和 CSS 內容,並將解析後的內容顯示在螢幕上。
  4. 網路 - 用於網路呼叫,比如 HTTP 請求。其介面與平臺無關,併為所有平臺提供底層實現。
  5. 使用者介面後端 - 用於繪製基本的視窗小部件,比如組合框和視窗。其公開了與平臺無關的通用介面,而在底層使用作業系統的使用者介面方法。
  6. JavaScript 直譯器。用於解析和執行 JavaScript 程式碼。
  7. 資料儲存。這是持久層。瀏覽器需要在硬碟上儲存各種資料,例如 Cookie。新的 HTML 規範 (HTML5) 定義了“網路資料庫”,這是一個完整(但是輕便)的瀏覽器內資料庫。

browser components

根據前置知識可知:軟體是由其中程式可以執行的。那麼如果想寫一款瀏覽器的話,我們有兩種實現思路,要麼實現為單程式多執行緒模式,要麼實現為多程式模式

那我們常用的瀏覽器是屬於哪種模式呢?

下一篇文章

瀏覽器架構-實踐篇

相關文章