1-瀏覽器架構-實踐篇
那麼我們來來看看Chrome是對應的瀏覽器架構是怎樣的呢?當我們開啟工作管理員的時候,會看到看到瀏覽器開啟會有多個程式(可以通過Chrome的更多工具 -> 工作管理員
自行檢視。)。
那我們來來看看chrome有哪些主要程式吧。
- Browser Process:瀏覽器的主程式(負責協調、主控),只有一個。
- 負責包括位址列,書籤欄,前進後退按鈕等部分的工作;
- 負責各個頁面的管理,建立和銷燬其他程式;
- 將Renderer程式得到的記憶體中的Bitmap,繪製到使用者介面上;
- 負責處理瀏覽器的一些不可見的底層操作,比如網路請求和檔案訪問;
- Renderer Process:預設每個Tab頁面一個程式,互不影響。
- 頁面渲染,指令碼執行,事件處理等
- Plugin Process:每種型別的外掛對應一個程式,僅當使用該外掛時才建立
- GPU Process:最多一個,用於3D繪製等
那多程式架構由那些優/劣勢呢?
優勢 | 劣勢 |
---|---|
單一頁面的 crash 並不會影響瀏覽器 | 不同程式記憶體不能共享,導致不同程式記憶體中存有相同資訊 |
外掛的 crash 並不會影響瀏覽器 | |
多程式充分利用多核優勢 | |
更為安全,在系統層面上限定了不同程式的許可權 |
chrome 為了節省記憶體的使用,限制了最多的程式數,最大程式數量由裝置的記憶體和 CPU 能力決定,當達到這一限制時,新開啟的 Tab 會共用之前同一個站點的渲染程式。
Chrome 把瀏覽器不同程式的功能看做服務,這些服務可以方便的分割為不同的程式或者合併為一個程式。以 Broswer Process 為例,如果 Chrome 執行在強大的硬體上,它會分割不同的服務到不同的程式,這樣 Chrome 整體的執行會更加穩定,但是如果 Chrome 執行在資源貧瘠的裝置上,這些服務又會合併到同一個程式中執行,這樣可以節省記憶體。
以上介紹完了瀏覽器的基本架構,但是我們最開始的問題還沒開始解決呢!回顧一下問題:
「在瀏覽器位址列中輸入 url 到頁面展現的短短几秒內瀏覽器究竟做了什麼?」