欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 了解html頁面的渲染過程以備學習前端的性能優化

了解html頁面的渲染過程以備學習前端的性能優化

熱門標簽:營口400電話申請 禹州電話外呼系統 新鄉機器人外呼系統 水經注萬能地圖標注 梧州地圖標注app AI外呼系統 價格 錦州企業外呼系統 最簡單的百度地圖標注店鋪 青海保險智能外呼系統商家
最近在學習前端的性能優化,有必要了解一下頁面的渲染流程,以便對癥下藥,找出性能的瓶頸所在。以下是我看到的一些東西,分享給大家。
參考:Understanding the renderer
頁面的渲染有以下特點
•單線程事件輪詢
•定義明確、連續、操作有序(HTML5)
•分詞和構建DOM樹
•請求資源并預加載
•構建渲染樹并繪制頁面
具體來說
當我們從網絡上得到HTML的相應字節時,DOM樹就開始構建了。由瀏覽器更新UI的線程負責。當遇到以下情況時,DOM樹的構建會被阻塞:
•HTML的響應流被阻塞在了網絡中
•有未加載完的腳本
•遇到了script節點,但是此時還有未加載完的樣式文件
渲染樹構建自DOM樹,并且會被樣式文件阻塞。
由于是基于單線程的事件輪詢,即使沒有腳本和樣式的阻塞,當這些腳本或樣式被解析、執行并且應用的時候,也會阻塞頁面的渲染。
一些不會阻塞頁面渲染的情況
•定義的defer屬性和async屬性的
•沒有匹配的媒體類型的樣式文件
•沒有通過解析器插入script節點或樣式節點
下面,通過一個例子來說明一下(完整的代碼)

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
  <div>Hi there!</div>
  <script>
    document.write('<script src="other.js"></scr' + 'ipt>');
  </script>
  <div>Hi again!</div>
  <script src="last.js"></script>
</body>
</html>

代碼很容易看明白,如果放在瀏覽器中打開會立即顯示出想要的頁面。下面,讓我們用慢鏡頭回放的方式來看看它究竟是怎么渲染的。

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>...

首先,解析器遇到了example.css,并將它從網絡中下載下來。下載樣式表的過程是耗時的,但是解析器并沒有被阻塞,繼續往下解析。接下來,解析器遇到script標簽,但是由于樣式文件沒有加載下來,阻塞了該腳本的執行。解析器被阻塞住,不能繼續往下解析。

渲染樹也會被樣式文件阻塞,所以這時候沒有瀏覽器不會去渲染頁面,換句話說,如果example.css文件下載不下來,Hi there! 是顯示不出來的。
接下來,繼續。。。

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
<div>Hi there!</div>
<script>
  document.write('<script src="other.js"></scr' + 'ipt>');
</script>

一旦example.css文件加載完成,渲染樹也就被構建好了。
內聯的腳本執行完之后,解析器就會立即被other.js阻塞住。一旦解析器被阻塞,瀏覽器就會收到繪制請求,"Hi there!"也就顯示在了頁面上。
當other.js加載完成之后,解析器繼續向下解析。。。

復制代碼
代碼如下:

<html>
<body>
<link rel="stylesheet" href="example.css">
  <div>Hi there!</div>
  <script>
    document.write('<script src="other.js"></scr' + 'ipt>');
  </script>
  <div>Hi again!</div>
  <script src="last.js"></script>

解析器遇到last.js之后會被阻塞,然后瀏覽器收到了另一個繪制請求,"Hi again!"就顯示在了頁面上。最后last.js會被加載,并且會被執行。
但是,為了減緩渲染被阻塞的情況,現代的瀏覽器都使用了猜測預加載(speculative loading)。

在上面這種情況下,腳本和樣式文件會嚴重阻塞頁面的渲染。猜測預加載的目的就是減少這種阻塞時間。當渲染被阻塞的時候,它會做以下一些事:
•輕量級的HTML(或CSS)掃描器(scanner)繼續在文檔中掃描
•查找那些將來可能能夠用到的資源文件的url
•在渲染器使用它們之前將其下載下來
但是,猜測預加載不能發現通過javascript腳本來加載的資源文件(如,document.write())。

:所有的“現代”瀏覽器都支持這種方式。
回過來再看上面的例子,通過猜測預加載這種方式是怎么工作的。

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
  <div>Hi there!</div>
  <script>...

解析器返現了example.css,并從網絡獲取,解析器沒有被阻塞,繼續解析,當遇到了內聯的script節點時,被阻塞住,由于樣式文件沒有加載完成,阻塞了腳本的執行。渲染樹同樣也被樣式文件阻塞住,所以瀏覽器沒有收到渲染請求,看不到任何東西。到目前為止,和剛才提到的那種方式是一樣的。但是接下來就由變化了。

預加載器(Speculative loader)繼續“閱讀”文檔,發現了last.js并視圖加載它。接下來:

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
  <div>Hi there!</div>
  <script>
    document.write('<script src="other.js"></scr' + 'ipt>');
  </script>

一旦example.css文件加載完成,渲染樹也就完成了構建,內聯的腳本也可以執行,之后解析器又被other.js阻塞住。解析器被阻塞住之后,瀏覽器會收到第一個渲染請求,“Hi there!” 會被現實在頁面上。這個步驟和剛才那種情況是一致的。然后:

復制代碼
代碼如下:

<html>
<body>
  <link rel="stylesheet" href="example.css">
  <div>Hi there!</div>
  <script>
    document.write('<script src="other.js"></scr' + 'ipt>');
  </script>
  <div>Hi again!</div>
  <script src="last.js"></script>

解析器發現了last.js,但是由于預加載器剛才已經把它給加載下來了,放在了瀏覽器的緩存里,所以last.js會被立即執行。之后,瀏覽器會收到渲染請求“Hi again”也被顯示在了頁面上。
通過前后兩種情況的對比,希望大家可以對頁面的渲染有一定的了解,然后再有針對性的做一些優化。晚安! (完)^_^

標簽:延邊 懷化 青島 哈密 山南 昭通 荊門 潮州

巨人網絡通訊聲明:本文標題《了解html頁面的渲染過程以備學習前端的性能優化》,本文關鍵詞  了解,html,頁,面的,渲染,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《了解html頁面的渲染過程以備學習前端的性能優化》相關的同類信息!
  • 本頁收集關于了解html頁面的渲染過程以備學習前端的性能優化的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    色天使在线视频| 国产清纯在线一区二区www| 一区二区三区免费| 不卡电影一区二区三区| 蜜桃av.com| 国产欧美一区二区三区鸳鸯浴 | 成人av在线观| 在线观看亚洲网站| 国产精品久久一级| 成人深夜视频在线观看| 国产一区二区三区在线看麻豆| 亚洲精品乱码久久久久久久久久久久| 日韩精品资源二区在线| 美日韩一区二区三区| 这里只有久久精品| 久久蜜桃av一区二区天堂 | a在线播放不卡| 91porn在线视频| 日韩美女精品在线| 亚洲人精品午夜| www.亚洲国产| 欧美日韩精品一区二区三区蜜桃| 一区二区国产视频| ass极品水嫩小美女ass| 欧美精品在线一区二区三区| 日韩电影在线看| 免费在线观看a视频| 国产精品午夜春色av| av不卡在线观看| 欧美裸体bbwbbwbbw| 美女一区二区视频| 国产精品综合激情| 国产欧美综合在线| 国产又粗又长又硬| 亚洲女人毛茸茸高潮| 欧美国产日韩在线观看| 国产91高潮流白浆在线麻豆| 色婷婷激情一区二区三区| 亚洲国产一区在线观看| 亚洲精品在线视频免费观看| 久久久久久麻豆| 成人黄色综合网站| 欧美日韩国产综合草草| 蜜臀va亚洲va欧美va天堂| 萌白酱视频在线| 亚洲欧美另类久久久精品| 中文视频在线观看| 久久美女高清视频| 日本r级电影在线观看 | 91麻豆自制传媒国产之光| 欧美日韩成人一区二区| 另类综合日韩欧美亚洲| 极品颜值美女露脸啪啪| 亚洲电影一级片| 九九九视频在线观看| 亚洲视频网在线直播| a天堂视频在线观看| 欧美激情综合网| 国产精品无码一区二区三| 婷婷在线精品视频| 亚洲综合区在线| 日本欧美一区二区在线观看| 国产三级短视频| 亚洲免费看黄网站| 精品少妇人妻一区二区黑料社区| 中文字幕精品一区| 精品人妻一区二区免费视频| 国产精品美女一区二区三区| 亚洲制服丝袜在线播放| 日韩伦理av电影| 巨胸大乳www视频免费观看| 亚洲私人影院在线观看| 亚洲最大成人网站| 亚洲综合激情另类小说区| 色欲狠狠躁天天躁无码中文字幕| 亚洲永久免费视频| 999久久久国产| 日日夜夜精品视频免费| 色激情天天射综合网| 韩国视频一区二区| 欧美一区二区三区色| gogo大胆日本视频一区| 久久久国产一区二区三区四区小说 | 成人小视频在线观看| 欧美一级高清片在线观看| 99久久精品免费看国产免费软件| 久久久噜噜噜久噜久久综合| 一级黄色片毛片| 亚洲欧洲国产日韩| 中文字幕第69页| 国产123在线| 欧美自拍偷拍网| 午夜久久电影网| 全程偷拍露脸中年夫妇| 韩国精品在线观看| 欧美一区二区网站| 欧美一级片在线免费观看| 亚洲欧洲日产国码二区| 日韩av片在线免费观看| 蜜桃视频免费观看一区| 欧美日韩五月天| 三级网站免费看| 18欧美亚洲精品| 日韩在线中文字幕视频| 国产老女人精品毛片久久| 精品久久国产字幕高潮| 成年人的黄色片| 午夜精品久久一牛影视| 欧美日韩美少妇| 亚洲自拍偷拍网站| 色诱亚洲精品久久久久久| 成人午夜电影小说| 欧美激情一区二区| 91ts人妖另类精品系列| 国内精品免费在线观看| 精品sm在线观看| 97人妻精品一区二区免费| 日本系列欧美系列| 欧美一区二区三区在线视频| 五十路六十路七十路熟婆| 五月天丁香久久| 在线电影国产精品| 国产伦精品一区二区三区精品| 一区二区三区精品视频在线| 欧美视频完全免费看| 四虎国产精品永久免费观看视频| 亚洲免费看黄网站| 欧美色爱综合网| 亚洲少妇一区二区三区| 同产精品九九九| 日韩欧美一卡二卡| 久久成人激情视频| 国内精品久久久久影院色| 欧美国产日韩在线观看| 色综合天天性综合| japan高清日本乱xxxxx| 亚洲国产日日夜夜| 欧美一级生活片| 亚洲精品国产熟女久久久| 国产又粗又猛又爽又黄91精品| 国产午夜精品久久久久久免费视 | 天堂va欧美va亚洲va老司机| 免费成人美女女在线观看| 国产高清成人在线| 欧美国产在线观看| 色偷偷久久人人79超碰人人澡| 99久久久国产精品免费蜜臀| 一区二区不卡在线播放| 欧美精品久久天天躁| 日本一区二区三区网站| 捆绑调教一区二区三区| 国产精品水嫩水嫩| 91福利在线导航| 日本护士做爰视频| 国产在线播放一区二区三区| 国产精品国产自产拍高清av| 在线观看精品一区| 人妻少妇精品视频一区二区三区 | 欧美日韩在线电影| 女同毛片一区二区三区| 国产麻豆精品视频| 亚洲精品国产精品乱码不99| 制服丝袜成人动漫| youjizz亚洲女人| 91在线国产观看| 麻豆中文一区二区| 国产精品污网站| 欧美精品色综合| av电影网站在线观看| 成人av免费观看| 日韩精品福利网| 国产精品乱人伦| 欧美人妖巨大在线| 国产精品久久久视频| 99re视频精品| 久久成人久久鬼色| 亚洲欧洲制服丝袜| 日韩午夜激情电影| 最新一区二区三区| 日批在线观看视频| 国产v综合v亚洲欧| 三级精品在线观看| 中文字幕精品一区二区精品绿巨人| 精品亚洲乱码一区二区| 99re视频精品| 国产精品2024| 久久先锋影音av鲁色资源| 色哟哟日韩精品| 91视频免费观看网站| 99re这里只有精品首页| 蜜桃在线一区二区三区| 亚洲欧美另类综合偷拍| 久久久久成人黄色影片| 欧美人妇做爰xxxⅹ性高电影| 老司机深夜福利网站| 中文字幕在线播放视频| 99这里都是精品| 韩国三级电影一区二区| 午夜久久久久久| 国产精品久久久久久久久搜平片|