瀏覽器架構-實踐篇

白霽發表於2019-02-20

1-瀏覽器架構-實踐篇

那麼我們來來看看Chrome是對應的瀏覽器架構是怎樣的呢?當我們開啟工作管理員的時候,會看到看到瀏覽器開啟會有多個程式(可以通過Chrome的更多工具 -> 工作管理員自行檢視。)。

瀏覽器架構-實踐篇

那我們來來看看chrome有哪些主要程式吧。

  • Browser Process:瀏覽器的主程式(負責協調、主控),只有一個。
    1. 負責包括位址列,書籤欄,前進後退按鈕等部分的工作;
    2. 負責各個頁面的管理,建立和銷燬其他程式;
    3. 將Renderer程式得到的記憶體中的Bitmap,繪製到使用者介面上;
    4. 負責處理瀏覽器的一些不可見的底層操作,比如網路請求和檔案訪問;
  • Renderer Process:預設每個Tab頁面一個程式,互不影響。
    1. 頁面渲染,指令碼執行,事件處理等
  • Plugin Process:每種型別的外掛對應一個程式,僅當使用該外掛時才建立
  • GPU Process:最多一個,用於3D繪製等

不同程式負責的區域

那多程式架構由那些優/劣勢呢?

優勢 劣勢
單一頁面的 crash 並不會影響瀏覽器 不同程式記憶體不能共享,導致不同程式記憶體中存有相同資訊
外掛的 crash 並不會影響瀏覽器
多程式充分利用多核優勢
更為安全,在系統層面上限定了不同程式的許可權

chrome 為了節省記憶體的使用,限制了最多的程式數,最大程式數量由裝置的記憶體和 CPU 能力決定,當達到這一限制時,新開啟的 Tab 會共用之前同一個站點的渲染程式。

Chrome 把瀏覽器不同程式的功能看做服務,這些服務可以方便的分割為不同的程式或者合併為一個程式。以 Broswer Process 為例,如果 Chrome 執行在強大的硬體上,它會分割不同的服務到不同的程式,這樣 Chrome 整體的執行會更加穩定,但是如果 Chrome 執行在資源貧瘠的裝置上,這些服務又會合併到同一個程式中執行,這樣可以節省記憶體。

以上介紹完了瀏覽器的基本架構,但是我們最開始的問題還沒開始解決呢!回顧一下問題:

「在瀏覽器位址列中輸入 url 到頁面展現的短短几秒內瀏覽器究竟做了什麼?」

下一篇文章

問題-概況篇

相關文章