国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JS阻塞渲染,這么多年我理解錯啦?

開發 前端
JS線程負責執行JS,GUI渲染線程負責渲染,這兩者是互斥的,所以JS執行時會阻塞渲染。但隨著Dev Tools使用的增多,逐漸開始懷疑以上說法。本文會以實際案例來解釋為什么JS阻塞渲染。

大家好,我卡頌。

在中文社區,這么多年一直流傳一個說法:

JS線程負責執行JS,GUI渲染線程負責渲染,這兩者是互斥的,所以JS執行時會阻塞渲染。

但隨著Dev Tools使用的增多,逐漸開始懷疑以上說法。本文會以實際案例來解釋為什么JS阻塞渲染。

到底幾個線程

在講解JS線程與GUI線程互斥的文章中,通常會列出渲染進程包含的線程,比如:

  • GUI渲染線程。
  • JS引擎線程。
  • 事件觸發線程。
  • 定時觸發器線程。
  • HTTP請求線程。

但是,我們以百度的搜索頁舉例,打開Performance面板開啟錄制:

上圖錄制結果中:

  • Chrome_ChildIOThread對應IO線程的任務記錄,用戶輸入、網絡、設備相關事件都與他相關。
  • Raster記錄光柵化線程池任務、GPU記錄GPU合成位圖的任務、Compositor記錄合成線程的任務執行,以上三者都與瀏覽器渲染相關。
  • Main記錄渲染進程的主線程中的任務。

從這個角度看,瀏覽器實際的線程情況與那些GUI線程相關的文章描述的并不相同。

主線程的任務

接下來,讓我們進入Main。紅線框內長短不一的灰色塊,就是主線程中執行的任務。

注意看紅框內的綠色塊FP,代表First Paint(首次繪制):

那么在首次繪制前都要執行什么任務呢?可以看到主要有3個Task(任務):

第一個任務是請求HTML數據:

Parse HTML

當請求回HTML字節流后,開始第二個任務,將HTML字節流解析為DOM,這個任務的名字就是圖中的藍色塊Parse HTML:

注意其中有些執行時長不一的Evaluate Script,這些是解析DOM樹過程中遇到的JS代碼。

從DOM樹中可以看到這些阻塞DOM樹生成的JS腳本:

他們的存在顯著拉長了Parse HTML的用時。

Recaculate Style

解析完DOM樹(藍色Parse HTML)后,下一個任務是紫色Recaculate Style:

他負責將HTML中的CSS樣式(外聯、內聯)輸出為styleSheets,styleSheets有兩個作用:

  1. 可以與DOM樹結合為頁面帶來樣式。
  2. JS可以操作styleSheets改變頁面樣式。

我們可以從控制臺打印document.styleSheets直觀感受他的存在:

Layout

有了DOM樹與styleSheets,接下來需要為視圖中可見部分生成一棵樹(比如display: none部分就不需要在這棵樹中顯示)。

這個任務是紫色Layout:

Update Layer Tree

用戶看到的頁面實際是由多層頁面重疊后的結果,開發者可以用很多手段(比如z-index)改變某部分的層級。

比如滾動條就會形成自己獨立的層級:

既然是多層結構,那么就需要更新每層的信息,這個任務是紫色的Update Layer Tree:

Paint

我們可以發現,在FP之前,Update Layer Tree之后只剩下Paint這一任務了:

從字面意義講,這就是「繪制」么?并不是。

Paint的任務是整理每一層頁面的繪制信息,構成繪制列表,這些數據會交給合成線程負責后續繪制操作。

可以發現,具體的繪制操作是交由合成線程完成,他與JS所在線程(主線程)并不是互斥的。

JS為啥阻塞渲染

我們現在知道,JS執行與Paint任務都發生在主線程。

「渲染被阻塞」的原因很明顯:因為Paint任務沒有及時執行,即繪制列表沒有及時提交給合成線程。

之所以沒有及時執行,可能是因為JS執行時間過長,導致這一幀沒有時間執行Paint。

比如,我們打開B站,記錄下主線程的任務。

可以看到,有個JS執行時長達到231.88ms,超過了一幀的時間,在此期間主線程就沒時間執行Paint了:

總結

JS之所以阻塞渲染,是因為JS執行與「渲染相關任務」都在爭奪主線程有限的資源。

當JS執行時間過長,「渲染相關任務」就沒時間執行了。

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2015-03-27 10:20:41

谷歌地圖谷歌偉大

2020-07-28 15:18:52

Gartner信息安全網絡安全

2025-08-01 00:00:00

2023-11-13 08:49:54

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2018-05-09 11:04:35

Java程序員大數據

2024-03-01 17:01:15

GraphQL后端

2018-10-06 21:51:37

代碼SOLID編程

2021-04-27 15:13:20

Java開發語言

2021-09-13 10:03:54

藍牙連接藍牙藍牙設備

2017-08-21 15:10:30

筆記本塑料材質工藝

2021-02-03 08:24:32

JavaScript技巧經驗

2024-05-23 10:34:15

CSS 3CSS技術

2018-10-07 06:30:40

代碼設計模式面向對象原則

2021-12-16 10:16:18

硬盤WindowsiPhone

2019-03-11 08:33:04

攜號轉網運營商網絡

2022-08-01 09:44:07

架構MySQL數據庫

2020-07-21 18:37:14

代碼條件變量

2017-11-30 07:30:27

程序員代碼軟件世界觀

2020-03-30 16:18:02

代碼開發工具
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区毛片| 国产日韩欧美一区在线| 亚洲成人高清在线| 五月天在线免费视频| 99re热精品视频| 精品久久久久久久中文字幕| 可以免费看的黄色网址| 丝袜久久网站| 亚洲石原莉奈一区二区在线观看| 伊人75在线| 2022国产精品视频| 日韩欧美一区二区在线观看| 日韩高清电影免费| 色阁综合伊人av| 在线观看wwwxxxx| 亚洲超碰精品一区二区| 免费午夜视频在线观看| 美女在线观看视频一区二区| 成人午夜两性视频| 哺乳一区二区三区中文视频 | 国产精品国语对白| 亚洲国产精品二十页| 亚洲mv在线看| 欧美色图麻豆| 成人黄色免费片| 国产乱码精品一区二区三区四区| 久久婷婷国产麻豆91天堂 | 久久精品一区二区三区不卡| 日韩欧美国产二区| 欧美激情综合色综合啪啪| 日本人成精品视频在线| 亚洲伦理一区二区| 亚洲天堂av电影| 国产极品在线观看| 精品日产卡一卡二卡麻豆| 日本私人网站在线观看| 亚洲精品国产无天堂网2021| the porn av| 中文字幕av一区二区三区高| 777精品久无码人妻蜜桃| 韩国一区二区在线观看| 亚洲欧洲国产日韩精品| 日本美女一区二区| 日韩欧美一区二区视频在线播放 | 国际精品欧美精品| 久久久久久久久亚洲| 国产精品一区二区三区四区在线观看| 亚洲美女在线视频| 欧美日韩大片| 亚洲欧美日韩中文在线| 桃花岛成人影院| 最近2019年手机中文字幕| 伊人久久综合网另类网站| 精品精品国产国产自在线| 偷拍自拍亚洲| 久久久久久91| 国产剧情一区| 97神马电影| 久久激情婷婷| 亚洲第一综合网站| 国产成人精品一区二区三区四区 | 免费网站在线观看人| 精品免费一区二区三区| 欧美wwww| 色999日韩欧美国产| 亚洲视频精选| 国产精自产拍久久久久久蜜| 国产精品magnet| 国产高清免费在线| 欧美激情中文不卡| 日韩一二三四| 日韩成人激情视频| 51精品国产| 成人福利免费观看| 久久久久久久欧美精品| 国产69精品久久久久久久| 国产精品乱人伦中文| 在线免费色视频| 欧美一区二区在线播放| aaaa欧美| 国产精品老女人精品视频| 亚洲久久一区二区| 4444亚洲人成无码网在线观看| 久久久精品日韩欧美| 视频在线91| 亚洲国产又黄又爽女人高潮的| 超碰国产精品一区二页| 国产精品女人久久久久久| 久久九九国产| 亚洲免费av一区二区三区| 色综合亚洲欧洲| 婷婷综合六月| 国产精品视频免费在线| 美女在线观看视频一区二区| 成人免费淫片95视频观看网站| 欧美日韩精品是欧美日韩精品| 国产日本久久| 亚洲综合中文字幕在线| 不卡一卡二卡三乱码免费网站| 久草在线新资源| 精品香蕉一区二区三区| 欧美日韩激情| 一区二区三区一级片| 一区二区免费看| 蜜桃视频m3u8在线观看| 国产精品一区二区三区久久| 久久国产精品99久久久久久老狼| 97影院理论| 国产手机视频精品| 中文字幕亚洲精品乱码| 久久99中文字幕| 色噜噜狠狠色综合中国| 亚洲a成人v| 欧美亚洲国产免费| 一区二区三区视频在线看| 涩涩涩在线视频| 999精品视频一区二区三区| 粉嫩高潮美女一区二区三区| 色吊丝在线永久观看最新版本| 尤物九九久久国产精品的特点| 欧美激情一区| 欧美xxxxxxxxx59| 中文字幕日韩电影| 性一交一乱一区二区洋洋av| 天海翼女教师无删减版电影| 最新国产精品拍自在线播放| 亚洲欧美bt| 天堂av电影在线观看| 久久久日本电影| 国产99久久久精品| av在线免费观看网址| 国产欧美精品xxxx另类| 国产片一区二区三区| 极品美女一区| 欧美高清性xxxxhdvideosex| 精品久久久久久中文字幕一区奶水 | 国精产品一区| 国产精品一区二区三区成人| 久久人人爽爽爽人久久久| 青草视频在线免费直播| 91福利入口| 午夜精品免费在线观看| 人妖一区二区三区| 国产第一页视频| 色妞欧美日韩在线| 国产麻豆精品一区二区| heyzo一区| 深夜福利成人| 日韩三级视频在线观看| 1000部精品久久久久久久久| 中文字幕一区免费| 国产精品黄色av| 亚洲最大成人网4388xx| 亚洲欧美校园春色| 久草香蕉在线| 97在线看免费观看视频在线观看| 久久伊99综合婷婷久久伊| 成人亚洲综合| 日韩欧美视频网站| 久久精品久久久久久国产 免费| 成人激情文学综合网| 成人做爰视频www| 人妻久久久一区二区三区| 日韩视频―中文字幕| 91麻豆精品秘密| a看欧美黄色女同性恋| 五月婷婷六月丁香激情| 青青久久aⅴ北条麻妃| 亚洲成人资源在线| 午夜影院欧美| 91精彩视频在线观看| 蜜桃av色综合| 欧美精品一区二区三区久久久| 免费在线观看一区二区三区| 美女露胸视频在线观看| 岛国大片在线播放| 久久伊人精品视频| 亚洲欧洲精品一区二区三区不卡| 精品一区亚洲| 久久精品a一级国产免视看成人 | 中文字幕在线免费| 日本精品一区| 亚洲图片在区色| 国产精品久99| 青青草97国产精品麻豆| av在线电影免费观看| 亚洲欧美日韩精品在线| 中文字幕亚洲一区二区三区五十路| 国产视频一区二区三区在线观看| 美女少妇全过程你懂的久久| 国外av在线| japanese在线播放| 91av在线不卡| 欧美日韩一区二区三区视频| 激情综合色综合久久| 国产日韩欧美中文在线| 在线伊人免费视频| 亚洲人一区二区| 96精品视频在线| 7777女厕盗摄久久久|