---
# System prepended metadata

title: 瀏覽器運作原理速記
tags: [Note]

---

---
tags: Note
---

# 瀏覽器運作原理速記
## 先附上文件
[译 现代浏览器内部揭秘（第一部分）](https://juejin.cn/post/6844903679389073415)
[Inside look at modern web browser (part 1)  |  Web  |  Google Developers](https://developers.google.com/web/updates/2018/09/inside-browser-part1)

## 為了瞭解瀏覽器怎麼運作，首先我們必須先瞭解電腦是怎麼運作的
電腦核心是由 CPU 和 GPU 組成
CPU：電腦的大腦，辦公室的員工，每個人處理各自的任務，我們常聽到的四核心、八核心就是 CPU
GPU：處理平行運算，針對特定運算加速（繪圖、平行運算），應用於繪圖相關、挖礦
硬體（CPU、GPU） -> 作業系統 -> 應用程式


## 名詞介紹

### Process & Thread
Process  程序（中國稱進程）
Thread 執行緒（中國稱線程）
一個 Process 下有多個  Thread。

### IPC
IPC（Inter Process Communication）指不同 Process 之間溝通

## 一窺瀏覽器的世界
Browser 裡有各種 Process
（ex. Browser Process、GPU Process、Render Process、Plugin Process）

在 Chrome 裡面每開一個 tab 都是一個 Process (tab 就是瀏覽器上方的分頁)
- 優點：不互相影響，關掉那個 tab 就好
- 缺點：較耗效能

~~HTML 裡的 iframe 標籤也是一個 Process~~

## 流程跑起來

**/當我們在 Google search input 放入字串時/**
UI thread 會判斷這是我們要搜尋的內容還是URL -> 判斷完畢 -> UI thread 將結果丟給 Network thread
-> Network thread 開始解析 DNS、建立 connection（request） -> OK -> （response）跟 UI thread 說 OK，UI thread 找到 Renderer process 跟他說可以渲染畫面 -> Renderer process 渲染畫面

**/換頁（tab）時/**
Browser process 跟 Renderer process 溝通 -> Renderer process 裡的 Main thread 就主要來做渲染畫面的工作
-> Main thread 渲染完畫面會丟一個 page loaded 事件給 Browser process UI thread -> 
此時  UI thread 就知道網頁處理完可以觸發 onload 事件等等


## Renderer process

Renderer process 負責處理 DOM，DOM 是瀏覽器內部對於網頁的一個表示方法、一個資料結構


Renderer process 內有
- Main thread
- Worker threads 雜事
- Compositor thread 合成
- Raster thread 光柵

