咱們都知道瀏覽器的功能,就是向服務器發送請求,而後在瀏覽器窗口中展現對應請求回來的網絡資源。前端
那一個經典的前端面試題來講:「在瀏覽器地址欄中輸入 url 到頁面展示的短短几秒內瀏覽器究竟作了什麼?」面試
個人記憶點中,更多的是如何查詢對應的 IP,而後發送請求到服務器,而後在渲染就結束了,不知你是否是這樣?數據庫
可每每咱們好像忽視了,當代瀏覽器那些細微的交互點,如 tab 上的 spinner 的展示。爲了能慢慢的理解上述的問題,咱們首先一塊兒理一下瀏覽器這款軟件中到底有有什麼吧。後端
當代現有的瀏覽器主要由用戶界面(The user interface)、瀏覽器引擎(The browser engine)、呈現引擎(The rendering engine)、網絡(Networking)、JavasScript 解釋器(JavaScript interpreter)、用戶界面後端(UI backend)、數據存儲組成(Data storage)。瀏覽器
而這些組件的功能以下:服務器
根據前置知識可知:軟件是由其中進程能夠運行的。那麼若是想寫一款瀏覽器的話,咱們有兩種實現思路,要麼實現爲單進程多線程模式,要麼實現爲多進程模式。網絡
那咱們經常使用的瀏覽器是屬於哪一種模式呢?多線程