Browser
瀏覽器的工作順序
1. DNS 查詢
瀏覽器從域名服務器發起 DNS 查詢請求 得到 IP 位址
2. TCP 透過 3方交握 建立連線
3. TLS 安全協議
4. 解析 Parse
Parsing HTML
解析 HTML 並建構 DOM ( Document Object Model) Tree
透過 HTML Tag 建立的 Tree 描述了文件的結構
Tree 中 反映了不同的 Tag 中的層級關係
DOM 節點越多 建構 DOM 的時間越長
當解析中遇到css 或圖片時會請求資源並繼續解析
但遇到 script 標籤會阻塞渲染 並停止解析
Preload Scanner
預加載器會先掃描外部的引用資源並先下載
Parsing CSS
建立 CSSOM Tree 和 DOM 結構類似
CSSOM 中包含了 所有樣式
css是阻塞渲染的 在瀏覽器接收完css前 內容無法渲染
從性能的角度來說 更少的特定選擇器相對更快
但對瀏覽器來說 這點消耗非常小
Render Tree
為了建立渲染樹 瀏覽器從 DOM 根節點開始決定哪些 CSS 規則被添加
而有 display: none 和 head 元素不會被放進 render tree 中
Layout
計算每個節點的尺寸和位置
第一次確認節點尺寸和位置稱為 Layout
隨後有相關變化稱為 Reflow
Paint
將節點繪製到畫面上
將每個元素轉化為實際的像素
包含了背景色 圖片 文字等
compositing
將元素以不同層進行繪製
並合成在畫面上
Reflow 和 Repaint
Reflow
如果變動導致畫面需要更新
width height 等
當有一個節點變動 就需要重新計算畫面中所有元素的位置和長寬
Repaint
變動不影響布局的屬性時
color outline visibility等
Last updated