前端效能優化 —— 前端效能分析
(點選上方公眾號,可快速關注)
作者:ouven
https://my.oschina.net/zhangstephen/blog/1601380
前端效能優化是一個很寬泛的概念,本書前面的部分也多多少少提到一些前端優化方法,這也是我們一直在關注的一件重要事情。配合各種方式、手段、輔助系統,前端優化的最終目的都是提升使用者體驗,改善頁面效能,我們常常竭盡全力進行前端頁面優化,但卻忽略了這樣做的效果和意義。先不急於探究前端優化具體可以怎樣去做,先看看什麼是前端效能,應該怎樣去了解和評價前端頁面的效能。
通常前端效能可以認為是使用者獲取所需要頁面資料或執行某個頁面動作的一個實時性指標,一般以使用者希望獲取資料的操作到使用者實際獲得資料的時間間隔來衡量。例如使用者希望獲取資料的操作是開啟某個頁面,那麼這個操作的前端效能就可以用該使用者操作開始到螢幕展示頁面內容給使用者的這段時間間隔來評判。使用者的等待延時可以分成兩部分:可控等待延時和不可控等待延時。可控等待延時可以理解為能通過技術手段和優化來改進縮短的部分,例如減小圖片大小讓請求載入更快、減少HTTP請求數等。不可控等待延時則是不能或很難通過前後端技術手段來改進優化的,例如滑鼠點選延時、CPU計算時間延時、ISP(Internet Service Provider,網際網路服務提供商)網路傳輸延時等。所以要知道的是,前端中的所有優化都是針對可控等待延時這部分來進行的,下面來了解一下如何獲取和評價一個頁面的具體效能。
前端效能測試
獲取和衡量一個頁面的效能,主要可以通過以下幾個方面:Performance Timing API、Profile工具、頁面埋點計時、資源載入時序圖分析。
一、Performance Timing API
Performance Timing API是一個支援Internet Explorer 9以上版本及WebKit核心瀏覽器中用於記錄頁面載入和解析過程中關鍵時間點的機制,它可以詳細記錄每個頁面資源從開始載入到解析完成這一過程中具體操作發生的時間點,這樣根據開始和結束時間戳就可以計算出這個過程所花的時間了。
圖1為W3C標準中Performance Timing資源載入和解析過程記錄各個關鍵點的示意圖,瀏覽器中載入和解析一個HTML檔案的詳細過程先後經歷unload、redirect、App Cache、DNS、TCP、Request、Response、Processing、onload幾個階段,每個過程開始和結束的關鍵時間戳瀏覽器已經使用performance.timing來記錄了,所以根據這個記錄並結合簡單的計算,我們就可以得到頁面中每個過程所消耗的時間。
圖1 performance API關鍵時間點記錄
functionperformanceTest(){
let timing = performance.timing,
readyStart = timing.fetchStart - timing.navigationStart,
redirectTime = timing.redirectEnd - timing.redirectStart,
appcacheTime = timing.domainLookupStart - timing.fetchStart,
unloadEventTime = timing.unloadEventEnd - timing
.unloadEventStart,lookupDomainTime = timing.domainLookupEnd - timing.domainLookupStart,
connectTime = timing.connectEnd - timing.connectStart,
requestTime = timing.responseEnd - timing.requestStart,
initDomTreeTime = timing.domInteractive - timing.responseEnd,
domReadyTime = timing.domComplete - timing.domInteractive,
loadEventTime = timing.loadEventEnd - timing.loadEventStart,
loadTime = timing.loadEventEnd - timing.navigationStart;
console.log('準備新頁面時間耗時: ' + readyStart);
console.log('redirect 重定向耗時: ' + redirectTime);
console.log('Appcache 耗時: ' + appcacheTime);
console.log('unload 前文件耗時: ' + unloadEventTime);
console.log('DNS 查詢耗時: ' + lookupDomainTime);
console.log('TCP連線耗時: ' + connectTime);
console.log('request請求耗時: ' + requestTime);
console.log('請求完畢至DOM載入: ' + initDomTreeTime);
console.log('解析DOM樹耗時: ' + domReadyTime);
console.log('load事件耗時: ' + loadEventTime);
console.log('載入時間耗時: ' + loadTime);
}
通過上面的時間戳計算可以得到幾個關鍵步驟所消耗的時間,對前端有意義的幾個過程主要是解析DOM樹耗時、load事件耗時和整個載入過程耗時等,不過在頁面效能獲取時我們可以儘量獲取更詳細的資料資訊,以供後面分析。除了資源載入解析的關鍵點計時,performance還提供了一些其他方面的功能,我們可以根據具體需要進行選擇使用。
performance
相關推薦
前端效能優化 —— 前端效能分析
(點選上方公眾號,可快速關注)作者:ouvenhttps://my.oschina.net/zh
效能優化之效能分析簡介
效能優化是幾乎所有軟體開發過程都要考慮的事情。通常效能消耗符合二八定律,即20%的程式碼消耗了80%的效能,所以效能優化需要排查哪些地方最消耗效能。解決了最消耗效能的幾個關鍵點,就能使效能得到大幅度的提升。 &n
iOS效能優化 Analyze靜態分析和Instruments效能監測
一:Analyze靜態分析 App進行Build或Archive時,會產生很多編譯警告,這些警告是編譯時產生的,靜態分析的過程也類似,在XCode Product選單下,點選Analyze對App進行靜態分析。 Analyze主要分析以下四種問題:
MySQL 效能優化——「Explain 分析實踐」
DESC、DESCRIBE和EXPLAIN這三個關鍵字都是我們常用的,但是使用場景不同。從MySQL解析器的角度而言,他們的實際用法是一致的。 即實際使用過程中 DESC 等價於 DESCRIBE 等價於 EXPLAIN 。我們常常用於以下兩種場景:
mysql效能優化-慢查詢分析、優化索引和配置 (慢查詢日誌,explain,profile)
一、優化概述 二、查詢與索引優化分析 1效能瓶頸定位 Show命令 慢查詢日誌 explain分析查詢 profiling分析查詢 2索引及查詢優化 三、配置優化 1) max_connections 2) back_log 3) interactive_timeout 4)
mysql效能優化-慢查詢分析、優化索引和配置
目錄 一、優化概述 二、查詢與索引優化分析 1效能瓶頸定位 Show命令 慢查詢日誌 explain分析查詢 profiling分析查詢 2索引及查詢優化 三、配置優化 1) max_connections 2) back_lo
logback效能優化及原始碼分析
logback效能測試 logback版本:1.0.13 下圖是logback在實際併發環境中的表現,200併發請求,大量blocked: 移除日誌輸出做對比: 檢視thread dump 可以看到blocked是由logback導致。 logback
Oracle效能優化之統計分析
Statistic 對oracle 是非常重要的。 它會收集資料庫中物件的詳細資訊,並存儲在相應的資料字典裡。 根據這些統計資訊, optimizer 可以對每個SQL 去選擇最好的執行計劃。所以我們每天應該設定一個計劃來定時統計分析相關資訊。具體計劃如下:
iOS總結-效能優化-UITableView效能優化-定義一種Cell
隨著APP使用者介面內容越來越豐富,,再強的手機可能都無法同時渲染複雜的UI介面和保證流暢的體驗. 關於UITableView怎麼實現,正常的當然是用UITableview+自定義的UITableviewCell. 本篇的優化策略: 只定義一種cell 提前計算並快取每個Cell的高
Linux效能優化-記憶體效能優化思路
目錄 記憶體效能指標 記憶體效能工具 如何快速分析記憶體的效能指標 記憶體效能指標 系統記憶體使用情況 1.已用記憶體和剩餘記憶體 2.共享記憶體,通過tmpfs實現的,他的大小就是tmpfs使用的記憶體大小,這是一個特殊的快取 3.可用記憶體是新程序可以使
Linux效能優化-CPU效能優化思路
目錄 CPU效能指標 效能工具 如何迅速的分析CPU效能瓶頸 效能優化方法論 CPU優化 參考 CPU效能指標 CPU使用率 1.CPU使用率描述了非空閒時間佔總CPU時間的百分比,根據CPU上執行任務的不同,又被分為
軟體教練說:效能優化與效能設計,“相親相愛”的一對
摘要:效能優化通常是在現有系統和程式碼基礎上做改進,考驗的是開發者反向修復的能力,而效能設計考驗的是設計者的正向設計能力,但效能優化的方法可以指導效能設計,兩者互補。 效能優化是指在不影響正確性的前提下,使程式執行得更快,它是一個非常廣泛的話題。 優化有時候是為了降低成本,但有時候,效能能決定一個產品的成
從案例分析如何優化前端效能
在 De Voorhoede工作的日子裡,我們一直在追尋為使用者構建高效能的前端解決方案。不過並不是每個客戶會樂於遵循我們的效能指南,以至於我們必須一遍又一遍地跟他們解釋那些保證他們能夠戰勝競爭對手的效能策略的重要性。最近我們也重構了自己的官方主頁,使其能夠擁有更快地響應速度與
前端效能優化之利用 Chrome Dev Tools 進行頁面效能分析
背景 我們經常使用 Chrome Dev Tools 來開發除錯,但是很少知道怎麼利用它來分析頁面效能,這篇文章,我將詳細說明怎樣利用 Chrome Dev Tools 進行頁面效能分析及效能報告資料如何解讀。 分析面板介紹 上圖是 Chrome Dev Tools 的一個截圖,其中,我認為能用於進行頁面
Lighthouse前端效能優化測試工具
在前端開發中,對於自己開發的app或者web page效能的好壞,一直是讓前端開發很在意的話題。我們需要專業的網站測試工具,讓我們知道自己的網頁還有哪些需要更為優化的方面,我自己嘗試了一款工具:Lighthouse,感覺還不錯,記錄下來,也順便分享給用得著的夥伴。 Lighthouse分析web應用程式和w
2018 前端效能優化清單
下面是前端效能問題的概述,您可能需要考慮以確保您的響應時間是快速和平滑的。 2018 前端效能優化清單 - 第 1 部分 2018 前端效能優化清單 - 第 2 部分 2018 前端效能優化清單 - 第 3 部分 2018 前端效能優化清單 - 第 4 部分 &n
記錄一下前端效能優化-為何操作DOM會變慢?
對於大多數前端來說,效能優化的方法可能包括以下這些: 減少HTTP請求(合併css、js,雪碧圖/base64圖片) 壓縮(css、js、圖片皆可壓縮) 樣式表放頭部,指令碼放底部 使用CDN(這部分,不少前端都不用考慮,負責釋出的兄弟可能會負責搞好) 快取…… 不僅要避
[轉] webpack之前端效能優化(史上最全,不斷更新中。。。)
最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式
Web前端效能優化問題
1、請減少HTTP請求基本原理: 在瀏覽器(客戶端)和伺服器發生通訊時,就已經消耗了大量的時間,尤其是在網路情況比較糟糕的時候,這個問題尤其的突出。 一個正常HTTP請求的流程簡述:如在瀏覽器中輸入"www.xxxxxx.com"並按下回車,瀏覽器再與這個URL指向的伺服器建立連線,然後瀏覽器才
淺談前端效能優化(二)——對HTTP傳輸進行壓縮
1、前端效能優化的一點: 對js、css、圖片等進行壓縮,儘可能減小檔案的大小,減少檔案下載的時間,從而減少網頁響應的時間。 2、前端效能優化的另一點: 對HTTP傳輸進行壓縮,即在js,css、圖片等資源已經壓縮的基礎上(其實,檔案的壓縮與否均可,檔案的壓縮跟HTTP傳輸過程的壓縮沒關