含有外部 css 文件的渲染流水線
上圖中,請求 HTML 數據和構建 DOM 中間有一段空閑時間,這段時間可能成為頁面渲染的瓶頸。DOM 構建結束后,css 文件還未下載完成這段時間內,渲染流水線一直在等待,因為下一步是合成布局樹。合成布局樹需要 CSSOM 和 DOM,所以需要等待 CSS 加載結束并解析為 CSSOM。這種情況下,CSS 沒有阻塞 DOM 的生成。
CSSOM 的作用
含有內聯 JS 和 外部 CSS 頁面的渲染流水線
從上圖中可以看到,構建 DOM 過程中遇到 JS 會停止構建,去解析執行 JS,因為 JS 可能會修改當前 DOM。
在執行 JS 腳本之前,若頁面中包含外部 css 或內聯的 css,渲染引擎需要將他們提前轉為 CSSOM,因為 JS 有修改 CSSOM 的能力,所以在 JS 執行前,還要依賴 CSSOM。 這意味著 CSS 在部分情況下也會阻塞 DOM 生成。
含有外部 JS 和 CSS 頁面的渲染流水線
請求到的 HTML 數據在預解析過程中,檢測到有外部 JS、CSS 文件需要下載,同時發起兩個文件的下載請求,下載時間不是重疊的,是按照最久的那個來算。
不管 CSS,JS 誰先到達,都要先等到 CSS 文件下載并生成 CSSOM,然后執行 JS 腳本,最后構建 DOM、布局樹、繪制頁面。
影響頁面展示因素及優化策略
從輸入 URL 到頁面首次展示的三階段:
最影響用戶體驗的就是第二階段,包括解析 HTML、下載 CSS、下載 JavaScript、生成布局樹、繪制頁面等操作。
優化策略
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答