<html>
<head>
<title>test</title>
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

我們打開chrome的控制臺查看timeline

由上圖 可得結(jié)論

1 圖中藍(lán)色透明條標(biāo)識瀏覽器從發(fā)起請求到接收到服務(wù)器返回第一個字節(jié)的時間,時間還是挺長的,而藍(lán)色實體條則為真正的html頁面下載的時間 還是很短的。

2 圖中紅框內(nèi)的這部分時間則表示瀏覽器從下載完成html之后開始構(gòu)建dom,當(dāng)發(fā)現(xiàn)一個image標(biāo)簽時所花費的時間,由此可見dom是順序執(zhí)行的,當(dāng)發(fā)現(xiàn)image時便立即發(fā)起請求,而紫色透明條則是image發(fā)起請求時在網(wǎng)絡(luò)傳輸時所消耗的時間。

3 圖中timeline藍(lán)色豎線所處的時間為domComplete時間,紅色豎線為dom的onload時間,由此可見兩種事件的差異。而瀏覽器構(gòu)建dom樹所花費的時間可以算出即domComplete時間 減去 html下載完成后的時間大概80ms。

含有css的頁面

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

我們打開chrome的控制臺查看timeline

1 在添加了外部引入css之后,并沒有發(fā)現(xiàn)什么異常,但是有一點指的注意,也就是紅色豎線和藍(lán)色豎線挨得更進(jìn)了,這表明domComplete時間必須等待css解析完成,也就是構(gòu)建dom樹必須等待css解析完成,這也就解釋了下圖

含有javascript和css的頁面

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
<script type="text/javascript" src="H5FullscreenPage.js"></script>
</body>
</html>

我們打開chrome的控制臺查看timeline

1 圖上顯示在引入外部的js文件之后domComplete時間又被延后了,結(jié)合上面的renderTree,由于javascript代碼可能會更改css屬性或者是dom結(jié)構(gòu),所以在形成renderTree之前必須等待javascript解析完成才能接著構(gòu)建renderTree。

2 將javascript放在head內(nèi)和body底部的區(qū)別也在于此,放在head里面,由于瀏覽器發(fā)現(xiàn)head里面有javascript標(biāo)簽就會暫時停止其他渲染行為,等待javascript下載并執(zhí)行完成才能接著往下渲染,而這個時候由于在head里面這個時候頁面是白的,如果將javascript放在頁面底部,renderTree已經(jīng)完成大部分,所以此時頁面有內(nèi)容呈現(xiàn),即使遇到j(luò)avascript阻塞渲染,也不會有白屏出現(xiàn)。

內(nèi)嵌javascript的頁面

1 圖上可以看到,由于內(nèi)嵌了javascript,頁面上減少了一個請求,導(dǎo)致html文檔變大,消耗時間增多,但是domComplete時間提升的并不多。

使用async的javascript

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
<script async src="H5FullscreenPage.js" type ="text/javascript" ></script >
</body>
</html>

1 可以看到domComplete時間被大大提前 javascript也沒有阻塞css和body里面img元素的并行下載。

2 使用async標(biāo)識的script,瀏覽器將異步執(zhí)行這中script不會阻塞正常的dom渲染,這時html5所支持的屬性,另外defer也可以達(dá)到這種效果。

head里面js和css加載的關(guān)系

外聯(lián)js在css前面

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script src="H5FullscreenPage.js" type ="text/javascript" ></script >
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 沒有阻止css的并行加載但是影響了body里面img的并行加載

外聯(lián)js在css中間

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<script src="H5FullscreenPage.js" type ="text/javascript" ></script >
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 影響了css的并行加載和body里面img的并行加載

外聯(lián)js在css最后

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
<script src="H5FullscreenPage.js" type ="text/javascript" ></script >
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 影響了css的并行加載和body里面img的并行加載

內(nèi)嵌js在css前面

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script type ="text/javascript" >
var f = 1;
f ;
</script >
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 沒有影響css的并行加載也沒有影響body里面img的并行加載

內(nèi)嵌js在css中間

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<script type ="text/javascript" >
var f = 1;
f ;
</script >
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 影響了css的并行加載沒有英雄body里面img的并行加載

內(nèi)嵌js在css最后

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="page-animation.css" media="screen">
<script type ="text/javascript" >
var f = 1;
f ;
</script >
</head>
<body>
<img src="download-button.png" alt="HTML代碼優(yōu)化 網(wǎng)頁性能 JavaScript技巧 Javascript">
</body>
</html>

1 影響了css和body里面img的并行加載。

綜上所述:

當(dāng)瀏覽器從服務(wù)器接收到了HTML文檔,并把HTML在內(nèi)存中轉(zhuǎn)換成DOM樹,在轉(zhuǎn)換的過程中如果發(fā)現(xiàn)某個節(jié)點(node)上引用了CSS或者 IMAGE,就會再發(fā)1個request去請求CSS或image,然后繼續(xù)執(zhí)行下面的轉(zhuǎn)換,而不需要等待request的返回,當(dāng)request返回 后,只需要把返回的內(nèi)容放入到DOM樹中對應(yīng)的位置就OK。但當(dāng)引用了JS的時候,瀏覽器發(fā)送1個js request就會一直等待該request的返回。因為瀏覽器需要1個穩(wěn)定的DOM樹結(jié)構(gòu),而JS中很有可能有代碼直接改變了DOM樹結(jié)構(gòu),瀏覽器為了防止出現(xiàn)JS修改DOM樹,需要重新構(gòu)建DOM樹的情況,所以 就會阻塞其他的下載和呈現(xiàn).

這里的結(jié)論:

1 在head里面盡量不要引入javascript.

2 如果要引入js 盡量將js內(nèi)嵌.

3 把內(nèi)嵌js放在所有css的前面.

后記

1 本次的測試頁面http://1.lvming6816077.sinaapp.com/testaa/demo.html

2 測試所用瀏覽器 chrome

3 參考資料:http://www.zhihu.com/question/20357435/answer/14878543

http://www.haorooms.com/post/web_xnyh_jscss

4 如果有哪里說的不清楚或者錯誤的地方,歡迎留言反饋。

 更多關(guān)于云服務(wù)器域名注冊,虛擬主機的問題,請訪問三五互聯(lián)官網(wǎng):m.shinetop.cn

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處:三五互聯(lián)知識庫 » 網(wǎng)頁性能之html css javascript

登錄

找回密碼

注冊

主站蜘蛛池模板: 久久久久人妻精品一区二区三区| 秋霞电影院午夜无码免费视频| 中文字幕av无码免费一区| 天台县| 国产亚洲精品第一综合麻豆 | 亚洲av综合av一区| 日本人一区二区在线观看| 久久久久久伊人高潮影院| 一卡2卡三卡4卡免费网站| 亚洲精品一区二区妖精| 欧美精品国产综合久久| 亚洲国产日韩一区三区| 澳门永久av免费网站| 国产粉嫩一区二区三区av| 牛牛视频一区二区三区| 久久人妻国产精品| 国产成人精品一区二区三区| 女同在线观看亚洲国产精品| 人妻少妇偷人作爱av| 婷婷综合亚洲| 高中女无套中出17p| 日韩一区二区三区高清视频| 亚洲乱码中文字幕小综合 | 99热在线观看| 国产精品免费看久久久| 亚洲激情一区二区三区视频| 国产高清一区二区不卡| 亚洲春色在线视频| 人妻少妇偷人精品免费看| 黄页网站在线观看免费视频| 久久久精品人妻一区二区三区| 与子敌伦刺激对白播放| 国产成人高清精品免费软件| 夜夜夜高潮夜夜爽夜夜爰爰| 亚洲欧美综合中文| 亚洲第一综合天堂另类专| 国产精品人成在线播放蜜臀| 亚洲欧美综合精品成人导航| 日韩不卡二区三区三区四区| 99久久99这里只有免费费精品 | 一区二区三区av天堂|