成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用Chrome DevTools的Timeline分析頁面性能

v1 / 1297人閱讀

摘要:如果網(wǎng)頁動畫能夠做到每秒幀,就會跟顯示器同步刷新,達到最佳的視覺效果。下面的一條是,低于這條線,可以達到每秒幀上面的一條是,低于這條線,可以達到每秒次渲染。圖中幀柱的高度表示了該幀的總耗時,幀柱中的顏色分別對應(yīng)該幀中包含的不停類型的事件。

原文地址:http://horve.github.io/2015/10/26/timeli...

隨著webpage可以承載的表現(xiàn)形式更加多樣化,通過webpage來實現(xiàn)更多交互功能,構(gòu)建web應(yīng)用程序已經(jīng)成為很多產(chǎn)品的首要選擇。這種方式擁有非常明顯的優(yōu)勢:跨平臺、開發(fā)便捷、便于部署和維護等等,但隨著功能的不斷積累,web應(yīng)用程序也會變得越來越復(fù)雜。但是,我們?nèi)匀幌胍趙ebpage支持豐富的呈現(xiàn)形式的同時,讓頁面效果能夠達到>=60fps(幀)/s的刷新頻率以避免出現(xiàn)卡頓,就需要我們使用一些比較直觀的方式來分析衡量頁面的性能問題,為性能優(yōu)化方案提供依據(jù)。

為什么是60fps?
我們的目標(biāo)是保證頁面要有高于每秒60fps(幀)的刷新頻率,這和目前大多數(shù)顯示器的刷新率相吻合(60Hz)。如果網(wǎng)頁動畫能夠做到每秒60幀,就會跟顯示器同步刷新,達到最佳的視覺效果。這意味著,一秒之內(nèi)進行60次重新渲染,每次重新渲染的時間不能超過16.66毫秒。

需求大體明確,就是要找到頁面執(zhí)行過程中的性能瓶頸。而Chrome DevTools的Timeline則正是用來記錄和分析應(yīng)用在運行時所有的活動情況,它是用來排查應(yīng)用性能瓶頸的最佳工具。

下圖是Timeline面板的預(yù)覽效果:

Tips:為了避免瀏覽器插件對分析過程產(chǎn)生影響,建議在隱身模式下進行分析。

Timeline工具欄介紹

Timeline工具會詳細檢測出在Web應(yīng)用加載的過程中時間花費情況的概覽,包括下載資源、處理DOM事件、頁面布局渲染、向屏幕繪制元素等。你可以通過分析Timeline得到的事件、框架和實時的內(nèi)存用量,找出應(yīng)用的性能問題。

在分析頁面前,需要首先開啟錄制功能,記錄頁面的操作和渲染記錄。如上圖,左上角的灰色圓點就是錄制按鈕,點擊后會變成紅色,然后在頁面上進行相關(guān)操作后再次按下變成灰色完成錄制,這樣就完成了一次對操作及加載渲染的記錄過程,隨后Timeline就會開始分析操作過程中的各項性能參數(shù)。

Timeline同時提供了兩種查看模式:“事件模式(Event Mode)”和“幀模式(Frame Mode)”。如上圖箭頭所示。

事件模式:顯示重新渲染的各種事件花費的時間。
幀模式:顯示每一幀的時間花費情況。

事件模式 (Event Mode)

如果我們的一個頁面執(zhí)行效率不高,我們必須要搞清楚導(dǎo)致頁面性能低下的原因,到底是javascript執(zhí)行出了問題,還是頁面渲染出了問題。要了解這里面的執(zhí)行細節(jié),我們可以使用“事件模式”來進行分析。首先我們需要錄制一些需要被分析的操作,錄制結(jié)束后進入事件模式預(yù)覽Timeline。下圖是得到的事件模式的視圖:

在上圖中,不同的顏色表示不同的事件。一種顏色的區(qū)塊越長,說明在處理該事件的耗時就越長。單擊某一區(qū)塊,可以在下面的Summary概要中看到詳細的事件處理過程及耗時分布。

藍色(Loading):網(wǎng)絡(luò)通信和HTML解析
黃色(Scripting):JavaScript執(zhí)行
紫色(Rendering):樣式計算和布局,即重排
綠色(Painting):重繪
灰色(other):其它事件花費的時間
白色(Idle):空閑時間

在顯示的記錄中,瀏覽器也會為在檢測過程中發(fā)現(xiàn)的一些可能導(dǎo)致性能問題的過程進行標(biāo)注,在Mode View視圖區(qū)域,可能會出現(xiàn)一些紅色的區(qū)塊段,這些紅色的區(qū)塊段表明,在對應(yīng)的時間上執(zhí)行的事件可能存在性能問題,而在對應(yīng)的Main Thread視圖區(qū)域,事件區(qū)塊的右上角會出現(xiàn)紅色的小三角,點擊當(dāng)前區(qū)塊,在下面的Summary概要區(qū)域內(nèi)會給出詳細的警告內(nèi)容以及腳本可能出現(xiàn)問題的行數(shù),如下圖,瀏覽器提示“強制同步布局可能會導(dǎo)致性能瓶頸”:

此外,在關(guān)閉Event Mode后,還可以看到Record Detail視圖,詳細列出一次記錄中各類事件的詳細內(nèi)容。

Record Detail視圖區(qū)域的左側(cè)是事件標(biāo)題,右側(cè)是對應(yīng)的時間線。點擊每一條時間標(biāo)題可以看到更多信息,如事件發(fā)生在腳本的哪一行等。如果你只對某一個時間段內(nèi)的某些操作感興趣,可以通過移動時間軸的始末位置來選擇要瀏覽的區(qū)域:

幀模式 (Frame Mode)

幀模式從頁面渲染性能的角度提供了數(shù)據(jù)支撐,一個柱狀“frame”表示渲染過程中的一幀,也就是瀏覽器為了渲染單個內(nèi)容塊而必須要做的工作,包括:執(zhí)行js,處理事件,修改DOM,更改樣式和布局,繪制頁面等。

如前文所述,我們的目標(biāo)是保證頁面要有高于每秒60fps(幀)的刷新頻率,這樣就能保證頁面有高流暢度的渲染。

中在Frame視圖中有兩條貫穿該視圖的橫線,分別標(biāo)識出60FPS和30FPS的基準(zhǔn),按照前面提到的16.66ms的計算方式,我們可以理解為分別標(biāo)識了16.6ms和33.3ms兩個時間點。下面的一條是60FPS,低于這條線,可以達到每秒60幀;上面的一條是30FPS,低于這條線,可以達到每秒30次渲染。如果色柱都超過30FPS,這個網(wǎng)頁就有性能問題了。

圖中幀柱的高度表示了該幀的總耗時,幀柱中的顏色分別對應(yīng)該幀中包含的不停類型的事件。每一幀柱的高度越低越好,上圖是藝龍PC首頁www.elong.com的幀渲染圖,從圖中可以看出,在進行某些幀的渲染時,幀的渲染頻率低于30FPS/s,第二幀和第三幀就大幅低于30fps(幀柱高度高于30fps標(biāo)準(zhǔn)線),在實際瀏覽器渲染中就有可能出現(xiàn)卡頓。對相關(guān)的幀進行分析時,可以點擊其中某一幀查看渲染詳情,也可以選擇某個區(qū)域的幾個幀查看渲染詳情。而要找出可能影響性能的原因,點擊當(dāng)前問題幀,在Summary面板及Record Detail視圖中的詳細信息中進行逐條分析。

你可能注意到了在幀柱上存在灰色區(qū)域和空白區(qū)域,它們分別代表:
灰色區(qū)塊:那些沒有被DevTools感知到的活動
空白區(qū)塊:顯示刷新周期(display refresh cycles)中的空閑時間段

點擊某一個幀柱還可以得到該幀的詳細記錄數(shù)據(jù):

Warning: 警告信息
ScreenShot: 當(dāng)前選中幀的渲染截屏
Duration: 該記錄及其子記錄的總耗時
FPS: 當(dāng)前幀的渲染頻率
CPU Time: CPU耗時
Aggregated Time: 合計耗時分布

總結(jié)

發(fā)現(xiàn)問題是解決問題的第一步,chrome瀏覽器的TimeLine工具可以很好地輔助我們分析頁面的性能瓶頸,提供詳細全面的分析數(shù)據(jù),為我們進行性能優(yōu)化提供數(shù)據(jù)依據(jù)。當(dāng)然,TimeLine中有用的功能還有很多,比如Memery Mode, Screen Shot等,使用技巧多種多樣,在這里主要介紹了如何去記錄一段渲染過程,如何去使用Event ModeFrame Mode去查看并分析得到性能指標(biāo),后續(xù)如果有新的體會和發(fā)現(xiàn),還會再做記錄~

TimeLine中的事件匯總 Loading事件
事件 描述
Parse HTML 瀏覽器執(zhí)行HTML解析
Finish Loading 網(wǎng)絡(luò)請求完畢事件
Receive Data 請求的響應(yīng)數(shù)據(jù)到達事件,如果響應(yīng)數(shù)據(jù)很大(拆包),可能會多次觸發(fā)該事件
Receive Response 響應(yīng)頭報文到達時觸發(fā)
Send Request 發(fā)送網(wǎng)絡(luò)請求時觸發(fā)
Scripting事件
事件 描述
Animation Frame Fired 一個定義好的動畫幀發(fā)生并開始回調(diào)處理時觸發(fā)
Cancel Animation Frame 取消一個動畫幀時觸發(fā)
GC Event 垃圾回收時觸發(fā)
DOMContentLoaded 當(dāng)頁面中的DOM內(nèi)容加載并解析完畢時觸發(fā)
Evaluate Script A script was evaluated.
Event js事件
Function Call 只有當(dāng)瀏覽器進入到j(luò)s引擎中時觸發(fā)
Install Timer 創(chuàng)建計時器(調(diào)用setTimeout()和setInterval())時觸發(fā)
Request Animation Frame A requestAnimationFrame() call scheduled a new frame
Remove Timer 當(dāng)清除一個計時器時觸發(fā)
Time 調(diào)用console.time()觸發(fā)
Time End 調(diào)用console.timeEnd()觸發(fā)
Timer Fired 定時器激活回調(diào)后觸發(fā)
XHR Ready State Change 當(dāng)一個異步請求為就緒狀態(tài)后觸發(fā)
XHR Load 當(dāng)一個異步請求完成加載后觸發(fā)
Rendering事件
事件 描述
Invalidate layout 當(dāng)DOM更改導(dǎo)致頁面布局失效時觸發(fā)
Layout 頁面布局計算執(zhí)行時觸發(fā)
Recalculate style Chrome重新計算元素樣式時觸發(fā)
Scroll 內(nèi)嵌的視窗滾動時觸發(fā)
Painting事件
事件 描述
Composite Layers Chrome的渲染引擎完成圖片層合并時觸發(fā)
Image Decode 一個圖片資源完成解碼后觸發(fā)
Image Resize 一個圖片被修改尺寸后觸發(fā)
Paint 合并后的層被繪制到對應(yīng)顯示區(qū)域后觸發(fā)
參考文檔

https://developers.google.com/chrome-dev...

http://www.w3cfuns.com/article-1248-1.ht...

http://www.oschina.net/translate/perform...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86197.html

相關(guān)文章

  • Lighthouse使用與Google移動端最佳實踐

    摘要:當(dāng)一個按鈕沒有名字時,屏幕閱讀器會宣布按鈕。雖然每個元素的目的對于有視覺的用戶來說可能是顯而易見的,但對于依靠屏幕閱讀器的用戶來說并非如此。屏幕閱讀器使視覺障礙的用戶能夠通過將文本內(nèi)容轉(zhuǎn)換為可以使用的表格如合成語音或盲文來使用您的網(wǎng)站。 Lighthouse是一個Google開源的自動化工具,主要用于改進網(wǎng)絡(luò)應(yīng)用(移動端)的質(zhì)量。目前測試項包括頁面性能、PWA、可訪問性(無障礙)、最佳...

    ccj659 評論0 收藏0
  • 網(wǎng)頁性能分析不完全指南

    摘要:因此,如果可能,最好利用好毫秒響應(yīng)預(yù)先計算開銷大的工作,這樣網(wǎng)站就更有可能實現(xiàn)的性能。空閑主線程工作分成不大于毫秒的塊。點擊按鈕見圖示,會在頁面運行時捕獲性能指標(biāo)。 前言 經(jīng)常能在博客或者論壇上看到很多有關(guān)前端性能優(yōu)化的文章,但是卻很少看到如何分析一個網(wǎng)頁的性能的文章。到底什么樣的指標(biāo)(或者說是標(biāo)準(zhǔn))代表這個網(wǎng)頁性能好或者不好,通過什么方式來得到這些指標(biāo)呢?因此,本文來講述下如何分析一...

    zgbgx 評論0 收藏0
  • 一次移動優(yōu)化之旅

    摘要:在這里介紹移動中嵌入網(wǎng)頁,優(yōu)化頁面顯示速度。測試代碼如果后面找到解決方案,會更新到后面。一次移動優(yōu)化之旅二參考使用的分析頁面性能技術(shù)筆記詳解網(wǎng)頁渲染過程 在這里介紹移動App中嵌入網(wǎng)頁,優(yōu)化頁面顯示速度。 前言 最近在Boss的要求下,寫組件模式的移動頁面。這里選擇的庫是react。(為什么? 入門簡單 + JSX)。 在經(jīng)過愉快的編寫組件后,打包組件形成組件庫文件,然后被頁面引用。配...

    Binguner 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<