日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

渲染引擎 & 页面渲染流程 & 阻塞

發(fā)布時間:2024/8/26 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 渲染引擎 & 页面渲染流程 & 阻塞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文檔對象模型(Document Object Model,簡稱DOM)

瀏覽器渲染引擎

一個渲染引擎 主要模塊:
HTML 解析器

解釋 HTML 文檔的解析器,將 HTML 文本 解析成 DOM 樹

css 解析器

級聯(lián)樣式的解析器,為 DOM 中的各個元素計算出樣式信息,為布局提高基礎(chǔ)設(shè)施

javascript 引擎

使用 Javascript 代碼可以修改網(wǎng)頁的內(nèi)容,也能修改 css 的信息

javascript 引擎能夠解釋 javascript 代碼,并通過 DOM 接口和 CSSOM 接口來修改網(wǎng)頁內(nèi)容和樣式信息,從而改變渲染的結(jié)果。

layout 布局模塊

在 DOM 創(chuàng)建之后,Webkit 需要將其中的元素對象同樣式信息結(jié)合起來,

計算他們的大小位置等布局信息,形成一個能表達(dá)這所有信息的內(nèi)部表示模型

繪圖模塊

使用 圖形庫 將布局計算后的各個網(wǎng)頁的節(jié)點 繪制成 圖像結(jié)果

瀏覽器渲染頁面的整個過程,瀏覽器會從上至下解析文檔:

以上這些模塊依賴很多其他的基礎(chǔ)模塊,包括要使用到網(wǎng)絡(luò) 存儲 2D/3D圖像 音頻視頻解碼器 和 圖片解碼器。

所以渲染引擎中還會包括如何使用這些依賴模塊的部分。

1. 遇見HTML 標(biāo)記

調(diào)用 HTML 解析器解析為對應(yīng)的 token (一個 token 就是一個標(biāo)簽文本的序列化)

并構(gòu)建 DOM 樹(就是一塊內(nèi)存,保存著 tokens,建立它們之間的關(guān)系)

2.遇見 style/link 標(biāo)記 調(diào)用 css 解析器 處理 CSS 標(biāo)記并構(gòu)建 內(nèi)部表示結(jié)構(gòu) CSSOM 樹

CSS 解析器工作完成之后,在 DOM 樹上附加解釋后的樣式信息,這就是 RenderObject 樹

RenderObject 在創(chuàng)建的同時,Webkit 會根據(jù)網(wǎng)頁的結(jié)構(gòu)創(chuàng)建 RenderLayer,同時構(gòu)建一個繪圖上下文

根據(jù) 繪圖上下文 生成最終的圖像(這一過程需要依賴圖形庫)

3.遇見 script 標(biāo)記 調(diào)用 javascript 解析器 處理 script 標(biāo)記,綁定事件、修改 DOM 樹 / CSSOM樹 等

4.將 DOM 樹 與 CSSOM 樹 再次合并成一個渲染樹 Render 樹

5.根據(jù) 渲染樹 來布局,以計算每個節(jié)點的幾何信息____重排

6.將各個節(jié)點繪制到屏幕上____重繪

上面介紹的是一個完整的渲染過程

但現(xiàn)代網(wǎng)頁很多都是動態(tài)的,這意味著在渲染完成之后,

由于網(wǎng)頁的動畫或者用戶的交互,瀏覽器其實一直在不停地重復(fù)執(zhí)行渲染過程。(重繪重排)

以上的數(shù)字表示的是基本順序,這不是嚴(yán)格一致的,這個過程可能重復(fù)也可能交叉

網(wǎng)頁在加載和渲染過程會觸發(fā) "DOMContentLoaded" 和 "load" 事件

----> 分別在 DOM 樹解析完成后,觸發(fā) "DOMContentLoaded"

----> DOM 樹構(gòu)建并且網(wǎng)頁所有依賴資源都加載完成之后發(fā)生,觸發(fā) "load"

實際測試

瀏覽器加載資源是異步的

用 <style> 內(nèi)部樣式表 寫 css,是由 Parse HTML 異步解析的。

一張圖片分多次解析,其中 Parse HTML 這么快,體現(xiàn)了其異步執(zhí)行,只是開啟了一個任務(wù),讓它自己去請求資源并解析

css 阻塞 ---- 樣式寫在外部文件,在 index.css 中 link 導(dǎo)入

通過 link 進來的樣式 是同步解析的,由 Parse Stylesheet 進行解析

正因為是同步解析,所以 css 解析器 會阻塞頁面的渲染,從而避免了閃屏

這也是為什么推薦使用 <style link='index.css'> 引入外部樣式表

阻塞
css 阻塞
<style> 標(biāo)簽中的樣式

1. 由 html 解析器進行解析

2. 不阻塞瀏覽器渲染

3. 不阻塞 DOM 解析

<link src='index.css'>引入的外部 css 樣式 (推薦使用 <link> 方式引入外部 css,可以避免閃屏現(xiàn)象)

1. 由 CSS 解析器進行解析

2. 會阻塞瀏覽器頁面渲染(原因:避免閃屏)

<link rel="stylesheet" href="css/my-sleep-3000-commen.css" />

3. 不阻塞 DOM 結(jié)構(gòu)的解析

因為 DOM 解析 和 CSS 解析是兩個并行的進程

瀏覽器解析 DOM 生成 DOM Tree,解析 CSS 生成 CSS Tree

最終組成 render Tree,再渲染頁面,DOM 的解析,和 CSS的解析并行的。

4. 會阻塞 js 的執(zhí)行(但不會阻塞 js 等資源的加載)

腳本在文檔解析階段會請求樣式信息,如果 css 還沒有完全加載解析完,腳本可能獲得錯誤的回復(fù)

FireFox 會在樣式表加載解析過程中,禁止所有腳本
對于 WebKit 而言,僅當(dāng)腳本嘗試訪問樣式屬性可能會得到錯誤的回復(fù)時,禁止腳本的執(zhí)行

優(yōu)化方案: (盡可能快的提高 css 加載速度)

使用 CDN 加速
對 css 進行壓縮(用打包工具,比如 webpack, gulp 等,也可以通過開啟 gzip 壓縮)
減少 http 請求數(shù),將多個 css 文件合并
js 阻塞

會阻塞 DOM 解析

因為 js 可能會修改 DOM 樹

會阻塞 頁面的渲染

因為 js 代碼可能會修改 DOM 樹 / CSSOM 樹 的結(jié)構(gòu)

js 會順序執(zhí)行,阻塞后續(xù) js 邏輯的執(zhí)行 (不阻塞 js 等其他資源的加載)

維護依賴關(guān)系

css 的解析 和 js 的執(zhí)行 是互斥的 ( css 解析的時候 js 停止執(zhí)行,js 執(zhí)行的時候 css 停止解析)

預(yù)解析

WebKit 和 FireFox 都進行了這項優(yōu)化。

在執(zhí)行 js 腳本時,其他線程會解析文檔的其余部分 (只是檢查,不影響原結(jié)構(gòu)),找出并加載需要網(wǎng)絡(luò)加載的其他資源

使得這些資源在并行連接上加載,從而提高總體速度

預(yù)解析器 不會修改 DOM 樹,而是將這件事交給 主解析器 處理

預(yù)解析器 只會解析外部資源的引用(例如外部腳本、樣式、圖片)

提前發(fā)送請求,提前解析外部資源內(nèi)容

--------小尾巴
________一個人欣賞-最后一朵顏色的消逝-忠誠于我的是·一顆叫做野的心.決不受人奴役.怒火中生的那一刻·終將結(jié)束...

總結(jié)

以上是生活随笔為你收集整理的渲染引擎 &amp; 页面渲染流程 &amp; 阻塞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品免费囯产一区二区三区 | 五月香蕉网 | 小优视频污 | 亚洲一级特黄 | 综合久久久久久久 | 少妇高潮一区二区三区99 | 国产操操操 | 国产男女无套免费网站 | 欧美日韩精品一区二区三区视频播放 | 黄页免费网站 | 国产碰碰 | 国产视频综合 | 国产毛片视频 | 五月亚洲综合 | 国产99视频在线观看 | 中国特级黄色大片 | 日本在线视频免费观看 | 在线精品福利 | 99在线播放视频 | 午夜色网 | 性xxxx| 裸体裸乳被免费看视频 | 日韩福利在线观看 | 国产xxxx18| 黄色三级网络 | 久久人人爽人人爽人人片亚洲 | 免费99精品国产自在在线 | 亚洲av无一区二区三区 | 天天干,天天爽 | a级在线免费观看 | 神马午夜麻豆 | 美女被草视频在线观看 | 加勒比hezyo黑人专区 | 国产福利精品在线 | 久久久片| 性欧美一区二区三区 | 91蜜桃臀久久一区二区 | 东北毛片| 国产一区二区四区 | 黄色一级小说 | 中文字幕一区二区三区夫目前犯 | 老牛影视av一区二区在线观看 | 成人免费视频大全 | 看个毛片 | 91精品一区二区三区综合在线爱 | 国产成人啪免费观看软件 | 爱情岛论坛成人av | 国产麻豆成人精品av | 免费亚洲网站 | 婷婷精品在线 | 午夜爱爱毛片xxxx视频免费看 | 香蕉伊人| 肉丝超薄少妇一区二区三区 | 一级片在线免费观看视频 | 777色| 毛片毛片毛片毛片毛片毛片毛片毛片 | 日韩网站在线播放 | 91国视频 | 亚欧毛片| 欧美精品韩国精品 | 色婷婷六月 | 亚洲乱亚洲乱妇 | 日日操日日操 | 美女视频91 | 亚洲成人精选 | 国产成人97精品免费看片 | av免费毛片 | 中文字幕激情 | 美女高潮黄又色高清视频免费 | 在线观看日韩一区二区 | 国产精品手机视频 | 午夜天堂视频 | 欧美婷婷六月丁香综合色 | 中文字幕手机在线视频 | 久久成人福利 | 长腿校花无力呻吟娇喘的视频 | 丰满的人妻hd高清日本 | 成人免费视频一区二区 | 久久精品www人人爽人人 | 成人77777 | 91大神网址 | 亚洲欧美国产高清 | 肉嫁高柳家在线看 | 99热自拍偷拍 | 黄色片免费看 | 日韩精品一区二区亚洲av观看 | 在线播放不卡av | 男插女av | 三级久久久| 操操操网 | 国产精品成人在线观看 | 男女日屁视频 | 久久久成人精品一区二区三区 | 久热中文字幕 | av电影网站在线观看 | 日本电影一区二区三区 | 国产成人无码精品久久二区三 | 在线观看高清av | 日韩av一区二区三区 |