12. Network - 跟 server 要求資源
★ DNS Lookup - 依照 domain name 找尋 server 真正的 IP 位址
★ New TCP Connection - handshake roundtrip to the server
★ Http Request - 對 server 最少會有⼀一次 roundtrip
(包含 server 處理 request 的時間)
圖⽚片來源:google - Delivering the go
注意!只要跟 server 要求的資料,都會經過以上步驟!!
13. 開始解析 HTML
HTML
Document Object Model
⽂文件物件模型
『⼀一種語⾔言介⾯面提供了⼀一個⽂文件(樹)的結構化
表⽰示法,並定義讓程式可以存取並改變⽂文件架
構、⾵風格和內容的⽅方法。DOM 提供了⽂文件以擁
有屬性與函式的節點與物件組成的結構化表
⽰示。』- from mozilla developer network
DOM
14. 怎麼從 HTML 解析成 DOM︖?
圖⽚片來源:Google developers - constructing the obj
17. CSSOM (CSS Object Model)
CSS
body
p a
acolor: #f00;
font-size: 16px;
text-decoration:
none;
font-size:
16px;
color: #f00;
font-size: 16px;
color: #f00;
font-size: 16px;
CSS 物件模型
18. title
Image is NOT Critical
開始下載圖⽚片,建⽴立 Img DOM Node,
然後持續解析 DOM…
HTML
head
body
p
meta link
img
圖⽚片不會讓 DOM 停⽌止解析,
並不在 Critical Rendering Path 流程中
19. JavaScript is Critical !
HTML
GET
HTML
Network CSS CSSOM
DOM
JavaScript
title
HTML
head
body
p
meta link
imgscript
HTM DO
CSSOCSS
JavaScript 可動態改變
DOM 跟 CSSOM
20. JavaScript
JavaScript is Critical !
假如⺫⽬目前有 CSSOM 正在解析中的話,瀏覽器會先確定 Critical
CSS 有載⼊入且解析完成後,才會執⾏行載⼊入完畢的 JavaScript
HTML
GET
HTML
Network CSS CSSOM
DOM
JavaScript
HTM DO
JavaScript
2. CSSOM 會全部解析完畢
3. 才會開始執⾏行 JavaScript
1. 解析 DOM 是暫停的!
21. DOM 全部解析完畢
HTML
GET
HTML
Network CSS CSSOM
DOM
JavaScript
title
HTML
head
body
p
meta link
imgscript
DOMContentLoaded event
jQuery(document).ready
24. 建⽴立 Render Tree
描述內容 描述樣式
圖⽚片來源:render tree construction
Render Tree 只會含有『可⾒見的』Node,被 CSS 隱藏的
display:none 或是無法被察覺的 Node ( scripts, meta) 皆會
被省略在 Render Tree 中
25. Layout & Paint
Layout (reflow) - 依照 Render Tree 內容計算在螢幕上視埠 (viewpoint)
確切的 pixel size 跟 位置(幾何資訊)。
painting (rasterizing) - 把在 Layout 計算完成的 Node 資訊,繪製在瀏覽
器上
Render
Tree
Layout Paint
圖⽚片來源:render tree construction
26. Critical Rendering Path 總結
GET
HTML
Network
CSS CSSOM
HTML DOM
JavaScript
Render
Tree
Layout Paint
取得
HTML
解析DOM
GET CSS CSSOM
GET JS 跑 JS
停⽌止解析等
JS 跑完
等 CSSOM
完成
Render
Page
38. References
• Google developers - Critical Rendering Path
• Building Faster Website by Ilya Grigorik
• Delivering the goods by Paul Irish
• CSS and the Critical Path by Patrick Hamann
• Critical Rendering Path by Patrick Sexton
• Understanding the critical rendering path, rendering pages in
1 second by Luis Vieira