瀏覽器架構-原理篇

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

根據前置知識可知:軟件是由其中進程能夠運行的。那麼若是想寫一款瀏覽器的話,咱們有兩種實現思路,要麼實現爲單進程多線程模式,要麼實現爲多進程模式網絡

那咱們經常使用的瀏覽器是屬於哪一種模式呢?多線程

下一篇文章

瀏覽器架構-實踐篇架構

相關文章
相關標籤/搜索