久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

詳解css加載會(huì)造成阻塞嗎

這篇文章主要介紹了詳解css加載會(huì)造成阻塞嗎的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

終于考試完了,今天突然想起來(lái)前陣子找實(shí)習(xí)的時(shí)候,今日頭條面試官問(wèn)我,js執(zhí)行會(huì)阻塞DOM樹(shù)的解析和渲染,那么css加載會(huì)阻塞DOM樹(shù)的解析和渲染嗎?所以,接下來(lái)我就來(lái)對(duì)css加載對(duì)DOM樹(shù)的解析和渲染做一個(gè)測(cè)試。

為了完成本次測(cè)試,先來(lái)科普一下,如何利用chrome來(lái)設(shè)置下載速度

1、打開(kāi)chrome控制臺(tái)(按下F12),可以看到下圖,重點(diǎn)在我畫(huà)紅圈的地方

詳解css加載會(huì)造成阻塞嗎

2、點(diǎn)擊我畫(huà)紅圈的地方(No throttling),會(huì)看到下圖,我們選擇GPRS這個(gè)選項(xiàng)

詳解css加載會(huì)造成阻塞嗎

3、這樣,我們對(duì)資源的下載速度上限就會(huì)被限制成20kb/s,好,那接下來(lái)就進(jìn)入我們的正題

css加載會(huì)阻塞DOM樹(shù)的解析渲染嗎?

用代碼說(shuō)話:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>css阻塞</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
      h1 {
        color: red !important
      }
    </style>
    <script>
      function h () {
        console.log(document.querySelectorAll('h1'))
      }
      setTimeout(h, 0)
    </script>
    <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">
  </head>
  <body>
    <h1>這是紅色的</h1>
  </body>
</html>

假設(shè): css加載會(huì)阻塞DOM樹(shù)解析和渲染

假設(shè)結(jié)果: 在bootstrap.css還沒(méi)加載完之前,下面的內(nèi)容不會(huì)被解析渲染,那么我們一開(kāi)始看到的應(yīng)該是白屏,h1不會(huì)顯示出來(lái)。并且此時(shí)console.log的結(jié)果應(yīng)該是一個(gè)空數(shù)組。

實(shí)際結(jié)果:如下圖

詳解css加載會(huì)造成阻塞嗎

css會(huì)阻塞DOM樹(shù)解析?

由上圖我們可以看到,當(dāng)css還沒(méi)加載完成的時(shí)候,h1并沒(méi)有顯示,但是此時(shí)控制臺(tái)輸出如下

詳解css加載會(huì)造成阻塞嗎

可以得知,此時(shí)DOM樹(shù)至少已經(jīng)解析完成到了h1那里,而此時(shí)css還沒(méi)加載完成,也就說(shuō)明,css并不會(huì)阻塞DOM樹(shù)的解析。

css加載會(huì)阻塞DOM樹(shù)渲染?

由上圖,我們也可以看到,當(dāng)css還沒(méi)加載出來(lái)的時(shí)候,頁(yè)面顯示白屏,直到css加載完成之后,紅色字體才顯示出來(lái),也就是說(shuō),下面的內(nèi)容雖然解析了,但是并沒(méi)有被渲染出來(lái)。所以,css加載會(huì)阻塞DOM樹(shù)渲染。

詳解css加載會(huì)造成阻塞嗎

個(gè)人對(duì)這種機(jī)制的評(píng)價(jià)

其實(shí)我覺(jué)得,這可能也是瀏覽器的一種優(yōu)化機(jī)制。因?yàn)槟慵虞dcss的時(shí)候,可能會(huì)修改下面DOM節(jié)點(diǎn)的樣式,如果css加載不阻塞DOM樹(shù)渲染的話,那么當(dāng)css加載完之后,DOM樹(shù)可能又得重新重繪或者回流了,這就造成了一些沒(méi)有必要的損耗。所以我干脆就先把DOM樹(shù)的結(jié)構(gòu)先解析完,把可以做的工作做完,然后等你css加載完之后,在根據(jù)最終的樣式來(lái)渲染DOM樹(shù),這種做法性能方面確實(shí)會(huì)比較好一點(diǎn)。

css加載會(huì)阻塞js運(yùn)行嗎?

​ 由上面的推論,我們可以得出,css加載不會(huì)阻塞DOM樹(shù)解析,但是會(huì)阻塞DOM樹(shù)渲染。那么,css加載會(huì)不會(huì)阻塞js執(zhí)行呢?

同樣,通過(guò)代碼來(lái)驗(yàn)證.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>css阻塞</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script>
      console.log('before css')
      var startDate = new Date()
    </script>
    <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">
  </head>
  <body>
    <h1>這是紅色的</h1>
    <script>
      var endDate = new Date()
      console.log('after css')
      console.log('經(jīng)過(guò)了' + (endDate -startDate) + 'ms')
    </script>
  </body>
</html>

假設(shè): css加載會(huì)阻塞后面的js運(yùn)行

預(yù)期結(jié)果: 在link后面的js代碼,應(yīng)該要在css加載完成后才會(huì)運(yùn)行

實(shí)際結(jié)果:
詳解css加載會(huì)造成阻塞嗎

由上圖我們可以看出,位于css加載語(yǔ)句前的那個(gè)js代碼先執(zhí)行了,但是位于css加載語(yǔ)句后面的代碼遲遲沒(méi)有執(zhí)行,直到css加載完成后,它才執(zhí)行。這也就說(shuō)明了,css加載會(huì)阻塞后面的js語(yǔ)句的執(zhí)行。詳細(xì)結(jié)果看下圖(css加載用了5600+ms):

詳解css加載會(huì)造成阻塞嗎

結(jié)論

由上所述,我們可以得出以下結(jié)論:

1.css加載不會(huì)阻塞DOM樹(shù)的解析
2.css加載會(huì)阻塞DOM樹(shù)的渲染
3.css加載會(huì)阻塞后面js語(yǔ)句的執(zhí)行

因此,為了避免讓用戶看到長(zhǎng)時(shí)間的白屏?xí)r間,我們應(yīng)該盡可能的提高css加載速度,比如可以使用以下幾種方法:

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了純css實(shí)現(xiàn)照片墻3D效果的示例代碼,可以實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)圖片實(shí)現(xiàn)改變,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本篇文章主要介紹了純 Css 繪制扇形的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
本篇文章主要介紹了一份純CSS loading效果代碼示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
這篇文章主要介紹了css 實(shí)現(xiàn)文字過(guò)長(zhǎng)自動(dòng)隱藏功能,需要的朋友可以參考下
本篇文章主要介紹了詳解CSS3 rem(設(shè)置字體大小) 教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
本篇文章主要介紹了CSS3 linear-gradient線性漸變生成加號(hào)和減號(hào)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
主站蜘蛛池模板: 超碰人人艹 | 99re在线观看视频 | 日韩精品一区二区在线 | 久久视频在线免费观看 | 国产成人精品毛片 | 国产午夜精品福利 | 日韩毛片网站 | 亚洲三级在线 | 国产视频在线观看视频 | 亚洲国产精品久久久久 | 日韩一区三区 | 中文字幕免费在线 | 一级黄色录像视频 | 国产在线一 | 国产网站视频 | 久草网在线 | 精品视频一区二区三区 | 四虎看片 | 一区在线观看 | 亚洲 欧美 激情 另类 校园 | 欧美三级在线视频 | 午夜精品久久久久 | 亚洲成人精品 | 福利在线播放 | 黄色欧美大片 | 日韩精品视频在线播放 | 国产精品美女在线 | 亚洲 欧美 另类 综合 偷拍 | 天天爱夜夜操 | 国产精品久久久久久久久免费桃花 | 免费在线播放av | 欧美在线视频免费 | 911看片 | 欧美专区第一页 | 精品免费在线 | 无遮挡在线观看 | 亚洲日本视频 | 91九色在线视频 | 夜夜爽天天爽 | 婷婷综合色 | 亚洲 欧美 另类 综合 偷拍 |