Chrome的調試與架構

調試

功能

在這裏插入圖片描述

請求用時分佈

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

超完整的Chrome瀏覽器客戶端調試大全

架構

多線程

  • 多線程也就是單進程,瀏覽器是指瀏覽器的所有功能模塊都是運行在同一個進程裏,這些模塊包含了網絡、插件、JavaScript 運行環境、渲染引擎和頁面等
    在這裏插入圖片描述
  • 多線程的缺點
    • 不穩定
      • 早期瀏覽器需要藉助於插件來實現諸如 Web 視頻、Web 遊戲等各種強大的功能,但是插件是最容易出問題的模塊,並且還運行在瀏覽器進程之中,所以一個插件的意外崩潰會引起整個瀏覽器的崩潰
      • 除了插件之外,渲染引擎模塊也是不穩定的,通常一些複雜的 JavaScript 代碼就有可能引起渲染引擎模塊的崩潰。和插件一樣,渲染引擎的崩潰也會導致整個瀏覽器的崩潰
    • 不流暢
      • 所有頁面的渲染模塊、JavaScript 執行環境以及插件都是運行在同一個線程中的,這就意味着同一時刻只能有一個模塊可以執行
      • 運行一個複雜點的頁面再關閉頁面,會存在內存不能完全回收的情況,這樣導致的問題是使用時間越長,內存佔用越高,瀏覽器會變得越慢
    • 不安全
      • 過插件可以獲取到操作系統的任意資源,當你在頁面運行一個插件時也就意味着這個插件能完全操作你的電腦。如果是個惡意插件,那麼它就可以釋放病毒、竊取你的賬號密碼,引發安全性問題

多進程

  • 瀏覽器進程

    • 主要負責界面顯示、用戶交互、子進程管理,同時提供存儲等功能
  • 渲染進程

    • 核心任務是將 HTML、CSS 和 JavaScript 轉換爲用戶可以與之交互的網頁
    • 排版引擎 Blink 和 JavaScript 引擎 V8 都是運行在該進程中
    • 默認情況下,Chrome 會爲每個 Tab 標籤創建一個渲染進程
    • 出於安全考慮,渲染進程都是運行在沙箱模式下
  • 插件進程

    • 主要是負責插件的運行
    • 因插件易崩潰,所以需要通過插件進程來隔離,以保證插件進程崩潰不會對瀏覽器和頁面造成影響
      在這裏插入圖片描述
  • 多進程的優點

    • 穩定性
      • 由於進程是相互隔離的,所以當一個頁面或者插件崩潰時,影響到的僅僅是當前的頁面進程或者插件進程,並不會影響到瀏覽器和其他頁面
    • 流暢性
      • 即使 JavaScript 阻塞了渲染進程,影響到的也只是當前的渲染頁面,而並不會影響瀏覽器和其他頁面,因爲其他頁面的腳本是運行在它們自己的渲染進程中的,所以沒有響應的僅僅是當前頁面
        • 當關閉一個頁面時,整個渲染進程也會被關閉,之後該進程所佔用的內存都會被系統回收,這樣就輕鬆解決了瀏覽器頁面的內存泄漏問題
    • 安全性
      • 可以把插件進程和渲染進程單獨放到安全沙箱中,使之不能在你的硬盤上寫入任何數據,也不能在敏感位置讀取任何數據,例如你的文檔和桌面
      • 這樣即使在渲染進程或者插件進程裏面執行了惡意程序,惡意程序也無法突破沙箱去獲取系統權限
  • 多進程的缺點

    • 更高的資源佔用
      • 因爲每個進程都會包含公共基礎結構的副本(如 JavaScript 運行環境),這就意味着瀏覽器會消耗更多的內存資源
    • 架構的耦合
      • 瀏覽器各模塊之間耦合性高、擴展性差等問題,會導致現在的架構已經很難適應新的需求了

面向服務(SOA)

  • Chrome 整體架構會朝向現代操作系統所採用的 “面向服務的架構” 方向發展
    • 原來的各種模塊會被重構成獨立的服務(Service),每個服務(Service)都可以在獨立的進程中運行,訪問服務(Service)必須使用定義好的接口,通過 IPC 來通信
    • 從而構建一個更內聚、鬆耦合、易於維護和擴展的系統

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章