javascript - 關於css和js載入時阻塞頁面呈現的問題
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-18 10:58:43
0
1
615

為了進行測試,我刻意將big.css(3.8MB)和big.js(8.1MB)檔案變大.控制台網路選擇了Regular 4G,開啟了Disable cache,並且js檔案和css檔案都在body標籤之後引入。

第一種情況:頁面中不引入big.js,只引入big.css:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    
</head>
<body>
      <p>我是呈现出来的文字</p>
</body>
<link rel="stylesheet" href="css/big.css">
</html>

結果:此時頁面從一片空白到呈現出頁面中的文字總共耗時7.62s
截圖:

##第二種情況:頁面同時引入big.css和big.js,並且將big.css放在big.js之後:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    
</head>
<body>
      <p>我是呈现出来的文字</p>
</body>
<script src="js/big.js"></script>
<link rel="stylesheet" href="css/big.css">
</html>

結果:頁面從一片空白到呈現出頁面中的文字幾乎沒有耗時,也就是說立即就呈現出了文字,即使此時css和js仍然在加載中。

截圖:

#問題:為什麼第一種情況css的載入會阻塞頁面渲染那麼久,而第二種情況幾乎沒有阻塞?

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(1)
某草草

因為單線程,以及html是按順序解析的
第一種因為你的css在前,所以要先下載,解析
第二種因為在後面,所以先看到了文字,才去下載解析js和css
這也是為什麼大家說要把css放在head中,js放在底部,我們希望使用者看到介面的時候是有樣式的,同時也不希望js的下載和執行阻塞使用者看到頁面的時間

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板