Please enable JavaScript.
Coggle requires JavaScript to display documents.
瀏覽器(Chrome) - Coggle Diagram
瀏覽器(Chrome)
渲染機制
-
-
-
-
提示瀏覽器如何載入資源
- <script>: async或defer。非同步載入運行JS,不阻塞解析
- <link rel="preload"> 告知瀏覽器當前導航肯定需要該資源,盡快下載
-
-
- 主執行緒遍歷布局樹建立繪製紀錄
- z-index可改變繪製順序
更新渲染管道的成本很高
-
- 顯示器每秒刷新60次,產生流暢動畫
- 主執行緒渲染操作過程,若運行JS會阻塞
- 可將JS拆小塊並使用requestAnimationFrame
-
-
-
主執行緒的光柵化與合成
-
- 一個圖層可能很大,因此合成執行緒分塊後傳送到光柵執行緒
- 合成執行緒會給不同的光柵執行緒設定優先度,以便viewport內畫面可先被光柵化
-
-
-
-
互動機制
瀏覽器視角下的輸入事件
- 瀏覽器處理程式捕獲事件及發生區域
- 將事件類型及座標傳送給渲染處理程式
-
-
-
-
導航過程
-
簡單的導航
-
- UI執行緒告知網路執行緒導航位址
- 網路執行緒透過適當的協議(DNS查找、TLS連接)建立連線、請求資料
- 網路執行緒查看響應的content-type及payload(body)
- 若為HTML檔,把資料傳給渲染處理程式,並進行SafeBrowsing及CORB檢查
- 若為壓縮檔或其他檔案,意味著其為下載請求,將資料傳給下載管理器
-
-
額外步驟:初始載入完畢
- 渲染完畢時,渲染處理程式傳送IPC給瀏覽器處理程式
- 頁面所有的 frame 的 onload 事件已經觸發和執行完畢後發生
- UI執行緒停止頁籤上的載入動畫
-
如果有Service worker
-
- 若為已註冊,UI執行緒啟動渲染處理程式來處理
- 渲染處理程緒的worker執行緒處理
-
多處理程式體系架構
-
-
瀏覽器架構
多處理程式架構
主要處理程式種類
瀏覽器處理程式
- 控制應用中"Chrome"部分
- 包含網址列、書籤、上下一頁
- 網路請求、檔案訪問
-
-
GPU處理程式
- 處理獨立於其它處理程序的 GPU 任務
- 被分成不同處理程式,因為 GPU 處理來自多個不同應用的請求並繪製在相同表面
優點
- 處理程式互相獨立,單一處理程式失效不影響其他的
- 安全性與沙合化
-