Google Chrome瀏覽器時序圖

秉承重點放前面的原則,先展示兩種情況的時序圖,再在後面詳細說明。

時序圖結果

加載帶有JavaScript腳本的HTML

在這裏插入圖片描述

拉伸窗口

在這裏插入圖片描述

分析

加載帶有JavaScript腳本的HTML

加載一個Javascript腳本的HTML流程:

  • 用戶在UI界面輸入URL
  • UI向瀏覽器發起請求
  • 瀏覽器先去找緩存裏找這個頁面,如果沒有,就去網絡棧獲取URL
  • 網絡棧返回頁面數據
  • 瀏覽器將頁面數據傳給blink渲染引擎拿去渲染
  • blink分別依賴GDI、Skia繪製字體,圖像
  • blink返回給瀏覽器一個頁面bitmap
  • 瀏覽器展示bitmap到UI界面上去
  • 用戶觀察到頁面變化

使用plantUML繪製,繪製代碼如下:

@startuml
title Chrome Browser Timeline
User -> UI: enter url
UI -> Browser: make a request
Browser -> Network_Stack:obtain a page without cache
Network_Stack -> Browser:page data
Browser -> Blink : render
Blink -> V8 :parse JavaScript scripts
V8 --> Blink :
Blink -> GDI : draw fonts
GDI --> Blink:
Blink -> Skia : draw images
Skia --> Blink:
Blink --> Browser: page bitmap
Browser --> UI: display bitmap
UI --> User:
@enduml

時序圖如下:
在這裏插入圖片描述

拉伸窗口

這裏使用google chrome瀏覽器訪問必應首頁( https://cn.bing.com/?mkt=zh-CN ),使用chrome的performance工具來錄製拉伸窗口的過程。

從Call Tree可以看出對瀏覽器拖拽窗口主要有如下8個活動:

  • Layout: 頁面佈局計算執行時觸發
    • Recalculate style : Chrome重新計算元素樣式時觸發
  • Event:resize:發生了拉伸窗口事件
  • Update Layer Tree:更新頁面樹
  • Paint :重新繪製
  • Composite Layers: Chrome的渲染引擎完成圖片層合併時觸發
  • Time Fired:定時器激活回調後觸發
  • Minor GC:發生了Minor GC事件

在這裏插入圖片描述

根據下圖分析,可以知道拉伸窗口這個動作並沒有使chrome向網絡棧請求資源,涉及到的只有內核部分的渲染,具體過程是:

Event : resize —> Update Layer Tree —> Paint —> Composite Layer —> Layout —> Recalculate style —> Update Layer Tree —> Paint

在這裏插入圖片描述

由於這次不需要使用網絡棧和V8,因此使用order聲明順序,故plantUML代碼如下:

@startuml
title Chrome Browser Timeline

participant Skia order 8
participant GDI order 7
participant V8 order 6
participant Blink order 5
participant Network_Stack order 4
participant Browser order 3
participant UI order 2
participant User order 1

User -> UI: enter url
UI -> Browser: make a request
Browser -> Blink : recalculate style
Blink -> GDI : draw fonts
GDI --> Blink:
Blink -> Skia : draw images
Skia --> Blink:
Blink --> Browser:page bitmap
Browser --> UI:display bitmap
UI --> User:
@enduml

繪製瀏覽器時序圖如下所示:
在這裏插入圖片描述

參考:

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