1. 程式人生 > >web前端效能分析--原理篇 .

web前端效能分析--原理篇 .

web前端效能:

即是web使用者在訪問一個頁面時所要花費的時間總和。即一個完全意義上的使用者響應時間,相對於伺服器的響應時間而言還會包括更多的內容和影響因素。那麼一個web頁面的完整請求包括了哪些部分的時間總和就是web前段效能分析和優化所需要了解的基礎知識,先了解一下使用者從瀏覽器訪問一個url後到頁面完全展示所有內容的整個過程吧。

頁面的請求過程:

1、瀏覽器的url請求
2、遞迴尋找DNS伺服器
3、連線目標IP並建立TCP連線
4、向目標伺服器傳送http請求
5、web伺服器接收請求後處理
6、web伺服器返回相應的結果【無效、重定向、正確頁面等】

7、瀏覽器接收返回的http內容

================================前端解析分割線===========================================

8、開始解析html檔案,當然是自上而下,先是頭部,後是body

9、當解析到頭部css外部連結時,同步去下載,如果遇到外部js連結也是下載【不過js連結不建議放在頭部,因為耽誤頁面第一展現時間】

10、接著解析body部分,邊解析邊開始生成對應的DOM樹,同時等待css檔案下載

11、一旦css檔案下載完畢,那麼就同步去用已經生成的DOM節點+CSS去生成渲染樹

12、渲染樹一旦有結構模型了,接著就會同步去計算渲染樹節點的佈局位置

13、一旦計算出來渲染的座標後,又同步去開始渲染

14、10-13步進行過程中如果遇到圖片則跳過去渲染下面內容,等待圖片下載成功後會返回來在渲染原來圖片的位置

15、同14步,如果渲染過程中出現js程式碼調整DOM樹機構的情況,也會再次重新來過,從修改DOM那步開始

16、最終所有節點和資源都會渲染完成

=========================================分析結束分割線==============================================

17、渲染完成後開始page的onload事件
18、整個頁面load完成

整個過程中會有很多的分別請求,所以TCP連線會很多,並且每一個用完都會自己關了,除非是keep-live型別的可以請求多次才關閉。



綜上所述:
一個頁面的請求等於一個或多個url的請求,因此一個頁面裡包含的外部請求數會影響頁面的整體效能
【每請求一次就要多佔用一次cpu使用、多一次tcp連線】
每個url的請求又包括定址、連線、請求傳輸、返回傳輸、斷連的過程;因此每個階段的外部環境也會影響整體效能
【DNS伺服器的定址時間,請求和返回內容時的網路環境】
除了URL請求數量外,每個請求的內容大小也是影響效能的主要因素
【檔案越大消耗在傳輸過程中的時間就越長】
請求同樣多的資源,並行請求和序列請求速率是不一樣的,所以請求的資源要儘量支援同步請求
【同步請求不同資源,即請求被髮送到不同的資源伺服器即可】
依據瀏覽器的載入、渲染機制,選擇合適的HTML內容排版方式
【減少反覆建立物件例項的次數、充分利用快取機制】
優先載入使用者關注的內容
【css載入優於js內容,首屏內容優於非首屏內容】


關注完http請求的過程後,再來關注整個請求過程中關注的幾個時間點,通過確定時間點就可以確定影響效能的時間段,就是確定影響效能的因素。根據上面的介紹主要的幾個時間點又可以分頁面的整體時間點、以及單個url請求過程中的時間點。【基於httpanalyzer工具

的指標】

單個url請求的主要時間點:
1、Cache Read:快取讀取時間,或304錯誤的處理時間 
2、Block:請求等待時間,取決於快取檢查,網路連線等待
3、DNS Lookup:DNS伺服器查詢時間,取決於dns服務的數量,dns註冊的域
4、Connect:tcp連線的總時間,取決於連線型別,ssh,keepalive都會比http長
5、Send first to last:傳送請求內容的時間,取決於請求內容大小,及上行的傳輸速度
6、Wait:等待響應的時間,取決於網路環境的響應,web伺服器的處理時間
7、Receive first to last:接收響應內容的時間,取決於響應內容,下行的傳輸速度,也要考慮伺服器的頻寬
8、Time to first byte:從請求一直到接收到第一個字元的總時間,等於1+2+3+4+5+6
9、Network:網路消耗時間,等於3+4
10、Begin to end:整個請求的總時間,等於1+2+3+4+5+6+7


單個頁面的主要時間點:
1、DOM Ready Time: DOM完成的時間,從接收html到完全轉換成dom樹所需的時間
2、DOM Ready to Page Load: 頁面元素的載入和渲染完成時間,包括html,css,img及其它內容
3、Page Load Time: page頁onload事件的時間,其實際時間等於總時間 - (DOM ready + 元素渲染時間)
4、URL Requests Begin to End:url請求所消耗的所有時間,從傳送請求發起到接收最後一個位元組斷開
5、Network Time:消耗在網路上的時間,即tcp的連線時間
6、Begin to End:所有消耗的時間,包括請求結束後的渲染時間


PS:
瀏覽器是怎樣工作的

http://blog.csdn.net/zzzaquarius/article/details/6532299

英文原文:

http://taligarsiel.com/Projects/howbrowserswork1.htm

相關推薦

web前端效能分析--原理 .

web前端效能: 即是web使用者在訪問一個頁面時所要花費的時間總和。即一個完全意義上的使用者響應時間,相對於伺服器的響應時間而言還會包括更多的內容和影響因素。那麼一個web頁面的完整請求包括了哪些部分的時間總和就是web前段效能分析和優化所需要了解的基礎知識,先了解一下使用者從瀏覽器訪問一個url後到頁面

web前端效能分析--原理

web前端效能: 即是web使用者在訪問一個頁面時所要花費的時間總和。即一個完全意義上的使用者響應時間,相對於伺服器的響應時間而言還會包括更多的內容和影響因素。那麼一個web頁面的完整請求包括了哪些部分的時間總和就是web前段效能分析和優化所需要了解的基礎知識,先了解一下使用者從瀏覽器訪問一個url後到

WEB前端效能分析--工具

線上網站類: WebPageTest 說明: 線上的站點效能評測網站,地址http://www.webpagetest.org/ 補充: 其實這網站也是個開源專案,所以支援自己搭建一個內部的測試站點 ShowSlow 說明: showslow是yslow的資料收集與展示平臺http://www.show

探討web前端效能分析

即是web使用者在訪問一個頁面時所要花費的時間總和。即一個完全意義上的使用者響應時間,相對於伺服器的響應時間而言還會包括更多的內容和影響因素。那麼一個web頁面的完整請求包括了哪些部分的時間總和就是web前端效能分析和優化所需要了解的基礎知識,先了解一下使用者從瀏覽器訪問一個url後到頁面完全展示所有內容的

web前端效能優化提升

   網站的劃分一般為二:前端和後臺。我們可以理解成後臺是用來實現網站的功能的,比如:實現使用者註冊,使用者能夠為文章發表評論等等。而前端呢?其實應該是屬於功能的表現。並且影響使用者訪問體驗的絕大部分來自前端頁面。         而我們建設網站的目的是什麼呢?不就是為

web前端【第三】CSS選擇器

方式 設置 導入 標簽 info attr pos pan import 一、css概述 CSS是Cascading Style Sheets的簡稱,中文稱為層疊樣式表,對html標簽的渲染和布局 CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。 例如

web前端【第四】CSS屬性操作

idt lba adding 人的 ... charset 平鋪 cit stat 一、文本屬性 1.text-align:cnter 文本居中2.line heigth 垂直居中 :行高,和高度對應3.設置圖片與文本的距離:vertical-align4.text-de

web前端【第五】JavaScript基礎

嵌入式 搭載 分享 == 出現 scrip 核心 obj python 一、JavaScript的歷史 1992年Nombas開發出C-minus-minus(C--)的嵌入式腳本語言(最初綁定在CEnvi軟件中).後將其改名ScriptEase.(客戶端執行的語言)

web前端【第七】JS的DOM對象一

查找 all 第七篇 children 離開 驗證 eat scrip image 一、什麽是HTML DOM HTML Document Object Model(文檔對象模型) HTML DOM 定義了訪問和操作HTML文檔的標準方法 HTML

web前端【第六】JavaScript對象

ima cal 知識 重復 功能說明 push 前端 date() abcd 在JavaScript中除了null和undefined以外其他的數據類型都被定義成了對象,也可以用創建對象的方法定義變量,String、Math、Array、Date、RegExp都是JavaS

web前端【第八】JS的DOM對象二

purple 事件類型 湖北省 常用 web -h png 自己 string 一、節點操作 創建節點:var ele_a = document.createElement(‘a‘);添加節點:ele_parent.appendChild(ele_img);刪除節點:el

web前端【第九】JS的DOM對象三

內部 eat direct 詞法 表達 遍歷 -h bmi 常見 一、JS中for循環遍歷測試 for循環遍歷有兩種 第一種:是有條件的那種,例如 for(var i = 0;i<ele.length;i++){} 第二種:for (var i in li )

web前端【第十】jQuery基本語法

== gre doctype color asc div .com nextall file 一、jQuery基礎1.為什麽要用jquery? 寫起來簡單,省事,開發效率高,兼容性好2、什麽是jQuery? jQuery是一個兼容多瀏覽器的JavaScript庫

web前端【第十三】jQuery擴展和事件

.text .get lap lose remove 沖突 viewport 賦值 edit 一、jQuery事件 常用事件 blur([[data],fn]) 失去焦點 focus([[data],fn]) 獲取焦點( 搜索框例子) change([[d

Web前端效能優化問題

1、請減少HTTP請求基本原理: 在瀏覽器(客戶端)和伺服器發生通訊時,就已經消耗了大量的時間,尤其是在網路情況比較糟糕的時候,這個問題尤其的突出。 一個正常HTTP請求的流程簡述:如在瀏覽器中輸入"www.xxxxxx.com"並按下回車,瀏覽器再與這個URL指向的伺服器建立連線,然後瀏覽器才

如何進行web前端效能優化

這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【如何進行web前端效能優化】   大家好,我是IT修真院深圳分院第9期的學員

web前端效能優化的一些方法

web前端是應用伺服器處理之前的部分,前端主要包括:HTML,CSS,javascript,image等各種資源,針對不同的資源有不同的優化方式。  (2)減少DNS查詢: 內容優化 (1)減少HTTP請求數:這條策略是最重要最有效的,因為一個完整的請求要經過DNS定址,

主流Web Service效能分析

Web Service也稱為XML Web Service,WebService是一種可以接收Internet或者Intranet上傳遞過來的請求,是輕量級獨立的通訊技術,具有很好的跨平臺效能,因此使用Web Service有許多優點: 1. 跨防火牆的通訊 Web Service具有良好的

Web前端效能優化——如何有效提升靜態檔案的載入速度

原文連結:https://wetest.qq.com/lab/view/345.html?from=content_qcloud WeTest 導讀 此文總結了筆者在Web靜態資源方面的一些優化經驗。

深度講解:web前端效能優化

一、課程簡介: 1、課程大綱 涉及到的分類 網路層面 構建層面 瀏覽器渲染層面 服務端層面 涉及到的功能點 資源的合併與壓縮 圖片編解碼原理和型別選擇 瀏覽器渲染機制 懶載入預載入 瀏覽器儲存 快取機制 PW