精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

實例解析:《奇趣百科》性能優化

移動開發 移動應用 Android
奇趣百科年后進行了一次大改版, 不論是內容還是程序架構上,改版使用Vue.js的MVVM的理念令開發過程加速了不少。但是改版后卻出現了明顯的性能問題,出現了比較明顯的頁面卡頓,因此我們又專門做了一次性能優化。本文主要介紹Chrome DevTools中的Timeline Profils等工具的使用方法。

奇趣百科年后進行了一次大改版, 不論是內容還是程序架構上,改版使用Vue.js的MVVM的理念令開發過程加速了不少。但是改版后卻出現了明顯的性能問題,出現了比較明顯的頁面卡頓,因此我們又專門做了一次性能優化。本文主要介紹Chrome DevTools中的Timeline Profils等工具的使用方法。

1. 組件粒度加粗

首先最先想到的就是用Timeline看一下:

timline1.jpg

Frames情況還算正常, 但是注意到內存占用已經快17MB了, 相對于改版前的12MB是明顯偏高的(由于篇幅關系就不上圖了), 那么我們繼續來追查內存相關的,使用Chrome開發者工具的Profiles看一下當前的內存占用情況:
打開Chrome開發者工具 -> 點擊 Profiles 控制板 -> 選中 Take Heap Snapshot -> 點擊 Take Snapshot

heap-snapshot1.jpg

查看了一下, 發現listItemHead, listItemImg , listItemMeta 和 listTuwen 組件對象分別都各有9個或者10個(9個是因為業務邏輯問題)。

Vue.js支持組件系統,因此,為了提高復用性,我把一個卡片定義為一個組件,而這個組件又由若干個組件組成。

4components.jpg

卡片本身是listTuwen組件, 該組件包括了三個組件: listItemHead, listItemImg 和 listItemMeta。

接下來我們來研究一下snapshot表格中相應的列分別代表什么。

一個對象有兩種形式來持有內存:

  • 直接擁有

  • 間接引用

分別對應 snapshot 中的Shallow Size和Retained Size

Shallow Size

Shallow Size代表了對象直接持有的內存大小。一個標準的JS對象通常會持有用于描述自身邏輯和存儲直接值(屬性值)的內存。 通常情況下應該只有字符串和數組類型可能擁有一個較大的Shallow Size。

Retained Size

Retained Size代表了當前對象所引用的其他對象占用的內存大小. 當當前對象被銷毀時, 這一部分的內存會被釋放。

奇趣百科的首頁觸底加載一共可以加載30次一共300張卡片,我們加載30次完畢后與剛進入首頁的情況進行對比:

heap-snapshot2.jpg

內存占用已經飆升到了70MB了, 我們切換到 Comparison 視圖(紅框), 并選擇 Snapshot 1(紅框)。

#New 一列說明了三個組件的對象都增加了290個(289的是因為業務邏輯), Size Delta 一列說明了三個組件的對象各自增加了快7M的內存, 加起來就是20+MB了。

因此我們可以得出這樣一個結論: 同一頁面中大量被重用的組件盡量不要嵌套其他組件, 不然內存占用會隨著組件的增多而快速上升。

insideVue.jpg

可以看到一個Vue組件對象內部引用了大量的其他對象, 包括directives, watchers 等, 還有一些系列的 getter 和 setter 方法。

解決辦法就是卡片內部不使用組件, 一個卡片就只有自身這個組件, 采用其他方法來提高代碼的復用性。

1components.jpg

最后我們來對比優化后的結果:

heap-snapshot3.jpg

heap-snapshot3.jpg

觸底加載完畢,300張卡片占用內存40M左右,雖然listTuwen組件的對象占用的內用大了很多,但是總體下降了40%,優化效果很明顯。

移除視窗外的不必要的DOM

頁面上DOM的數目越少,占用內存就越少,性能也就越好,這是很容易得出來的結論。

參照手機淘寶搜索結果頁的做法, 我們可以把視窗外的不可見的卡片移除掉, 當這些卡片滾動回到窗口內(或者滾動位置接近到窗口的某個像素值)后再插入顯示.列表的卡片數目保持在一個恒定的值,而不是直線增長下去.

dom.jpg

奇趣百科線上的代碼可以看到,我們的卡片數目保持在30個,也就是 DOM 的數據是恒定的,不會隨著頁面越滾動到下面越多。

接下來我們看一下內存情況驗證我們這樣做的效果:

優化前后的 Timeline 工具的內存曲線:

dom2.jpg

內存曲線都成鋸齒形狀,有觸發垃圾回收,但是優化后的曲線上升的斜率比優化前少了2°,即內存上升速度慢了。

另外是優化前后的 Profiles 對比('DOM'作為關鍵字進行篩選):

dom3.jpg

內存優化后少了近10M,并且DOM的數據減少了10倍,內存使用下降25%。

圖片懶加載

進行這一個優化點之前,我們先來科普一下Timeline這個控制板。

最好在瀏覽器隱身模式下使用,禁用一切無關插件,因為插件也會占用內存,影響測試結果。如果需要記錄網絡請求的話, 最好把瀏覽器緩存也禁用掉。

網上盜的一張圖(出處):

timeline-panel1.jpg

有三種模式可以切換關注點:

  • Events: 顯示所有事件的記錄

  • Frames: 顯示頁面渲染的幀數

  • Memory: 顯示頁面的內存情況

這里我們重點關注 Frames 模式。

頁 面的每一幀內容都是GPU繪制出來的,它的最高繪制頻率受限于顯示器的刷新頻率,大多數情況下最高的繪制平率只能是每秒60幀(frames per second, 即fps),對應于顯示器的60Hz。因此在頁面性能的測試中,60fps是一個非常重要的指標,越接近越好。

這里說到了一個常量 -- 屏幕刷新頻率60Hz

60Hz 和60fps有什么關系?沒有任何關系。fps代表GPU渲染畫面的頻率,Hz代表顯示器刷新屏幕的頻率。一幅靜態圖片,你可以說這副圖片的fps是0幀 /秒,但絕對不能說此時屏幕的刷新率是0Hz,也就是說刷新率不隨圖像內容的變化而變化。游戲也好瀏覽器也好,我們談到掉幀,是指GPU渲染畫面頻率降 低。比如跌落到30fps甚至20fps,但因為視覺暫留原理,我們看到的畫面仍然是運動和連貫的。

Frames 模式模式中的 Frames 就是"幀". "一幀"(Frames模式下的一條柱子)代表了顯示器為了在一幀()內展現內容所要完成的工作,包括執行JavaScript,處理事件,更新DOM,改變樣式和布局還有繪制頁面.

timeline-panel3.jpg

在Frame視圖中有兩條貫穿該視圖的橫線,分別標識出60FPS和30FPS的基準。

timeline-panel4.jpg

注意到有些柱子有一部分是空白的或者是灰色的,分別代表:

  • 空白: 空閑時間

  • 灰色: 沒有被記錄的活動,可以理解成是瀏覽器內部c++的一些工作,這部分和前端的js以及渲染沒什么關系.

現在來看一下項目的 Frames 情況:

timeline-panel5.jpg

看到超出 60fps 的柱子還是挺多的, 而且都是柱子的大部分顏色都是綠色的。

先來說明一下柱子顏色的含義:

timeline-panel2.jpg

  • 藍色: 網絡和HTML解析

  • 黃色: JavaScript 腳本運行

  • 紫色: 樣式重計算和布局 ( Layout , Recaculate Style, Update Layer tree)

  • 綠色: 繪制和合成 ( Paint , Composite Layers)

所以我們大部分時間話費在繪制上了. 我們再選取一些比較高的柱子, 看看都有什么特點:

timeline-panel6.jpg

我們看到有一些空的綠色色塊和實心的綠色色塊,是這樣的:

繪制分兩步走: 畫和渲染

  • 畫: 這包括了一些系列你想要畫出來的東西, 而這些是由元素上的CSS而得來的。

  • 渲染: 逐條分析上一步中你想要"畫"的東西, 利用 GPU 來組合填充這些東西的實際像素。

這一部分我翻譯得很爛,因為我自己也不太懂具體的意思,所以大家可以看看原文 → About the green bars

而 Painting 包括了這些事件:

事件 描述 Composite Layers Chrome的渲染引擎完成圖片層合并時觸發 Image Decode 一個圖片資源完成解碼后觸發 Image Resize 一個圖片被修改尺寸后觸發 Paint 合并后的層被繪制到對應顯示區域后觸發。

根 據我的觀察, 我發現比較高的綠色柱子一般都包括多個Image Decode事件, 圖片加載回來而觸發了這個事件, 進而產生了大量的Rasterize Paint事件, 所以我猜測, 把圖片都分開加載, 不要一次性就加載10張圖片, 這樣就得把事件分散, 高的柱子拆成多個矮的柱子, 這樣就能進一步提升流暢度。

圖片懶加載是怎么實現的就不細說了, 類似的效果可以參照淘寶首頁。

最后我們來看一下優化后的 Timeline :

timeline-panel7.jpg

這個情況已經是達到比較理想的狀態了, 實際操作也比較流暢。

但是值得一提的是, 最后 PM 并沒有采納這一步的優化方式,因為體驗過后,PM認為圖片懶加載反而會讓用戶覺得卡頓, 并不是實際滑動上的卡頓, 而是整體體驗上的卡。所以最后從用戶體驗的角度出發, 我們的優化方案并沒有采用圖片懶加載。

責任編輯:chenqingxiang 來源: CocoaChina
相關推薦

2017-10-26 14:29:50

互動百科

2017-06-20 10:51:15

芒果

2017-02-09 17:05:03

2015-04-17 15:23:10

互動百科

2021-09-03 09:26:15

Python爬蟲百度百科

2022-12-01 13:10:13

SASE網絡

2013-10-30 16:54:46

維基百科維基百科的衰落

2017-01-19 17:41:30

百科

2018-06-29 17:05:51

互動百科

2024-01-04 10:19:48

2022-12-30 13:05:05

云計算

2023-02-13 11:43:26

CHATGPT人工智能

2015-11-09 10:15:53

中國網科技頻道

2022-11-22 15:33:29

工業物聯網IIoT

2022-10-17 12:51:28

2015-06-23 11:23:26

行業百科頻道

2017-06-27 14:36:03

移動 互聯網

2016-12-06 14:43:00

互動百科

2011-11-25 12:44:28

點贊
收藏

51CTO技術棧公眾號

69堂成人精品视频免费| 欧美高清一级片在线观看| 久久久精品影院| 天堂在线精品视频| 性欧美videoshd高清| 精品一区二区免费| 久久av.com| 国产精品日日摸夜夜爽| 蜜桃视频在线网站| 中文字幕乱码一区二区免费| 国产精品综合网站| wwwav国产| 久久久91麻豆精品国产一区| 亚洲成在人线在线播放| 蜜桃av久久久亚洲精品| 中文字幕欧美人妻精品| 亚洲精品国产首次亮相| 亚洲第一av在线| 国产免费人做人爱午夜视频| 男人在线资源站| 黑人巨大精品欧美黑白配亚洲| 免费99精品国产自在在线| 成年女人免费视频| 韩漫成人漫画| 亚洲人xxxx| 欧美不卡福利| 国产免费黄色录像| 亚洲在线播放| 久久亚洲私人国产精品va | 自拍偷拍欧美专区| 国产丝袜一区二区三区| 天天影视色综合| а√天堂8资源中文在线| av高清一区二区| 日韩av资源在线| 国产精品高潮呻吟AV无码| 欧美日本一区| 中文字幕精品一区二区精品| 亚洲一区和二区| 嫩草伊人久久精品少妇av杨幂| 亚洲精品成人a在线观看| 不卡一卡2卡3卡4卡精品在| 国产精品久久久久久久久久东京| 99精品人妻少妇一区二区| 国产高清一区在线观看| 国产一区二区毛片| 人体精品一二三区| 少妇久久久久久被弄高潮| 蜜桃视频欧美| 欧美日韩一本到| 国产视频一视频二| 污污的网站在线看| 国产精品乱码一区二三区小蝌蚪| 国产欧美va欧美va香蕉在线| av资源免费观看| 欧美成人亚洲| 日韩中文字幕视频在线| 人妻大战黑人白浆狂泄| 日韩欧美一级| 欧美日韩国产综合久久| 黄在线观看网站| 91福利区在线观看| 亚洲欧洲日产国产综合网| 日韩国产欧美精品| 性插视频在线观看| 99精品1区2区| 久久精品中文字幕一区二区三区 | 国产亚洲毛片在线| 欧美中文在线字幕| 自拍偷拍18p| 蜜臀久久久久久久| 91免费在线视频网站| 国产99视频在线| 国产精品主播直播| 国产精品18毛片一区二区| 污视频网站免费观看| 99麻豆久久久国产精品免费优播| 精品久久久久久一区二区里番| 五月激情六月婷婷| 久久久精品黄色| 色爱区成人综合网| 国产剧情在线| 午夜私人影院久久久久| 青青在线视频免费| 日本人69视频| 日本网站在线免费观看视频| 日韩一区在线免费观看| 50度灰在线观看| 国产v日韩v欧美v| 欧美日韩在线免费观看| 另类小说第一页| 美女精品久久| 亚洲精品日韩丝袜精品| 国产无遮挡在线观看| 亚洲女同另类| 欧美中文在线观看| 国产偷拍一区二区| 91免费版在线看| 在线观看成人av| 第四色日韩影片| 欧美亚洲国产一区二区三区va | 日韩av中字| 欧美高清性hdvideosex| 在线黄色免费网站| 91久久夜色精品国产按摩| 久久久久久噜噜噜久久久精品| 国产99免费视频| 国产精品一区二区三区99| 免费观看成人在线| 在线播放免费av| 色系网站成人免费| 欧美激情一区二区三区p站| 免费久久精品| 欧美精品999| av色综合网| 日韩av一二三区| 久久精品国产精品亚洲综合| 国产精品视频免费观看| 91美女视频在线| 欧美性xxxxx极品| 亚洲欧美国产中文| 久久久久久毛片免费看| 欧美xxxx做受欧美| 中文字幕在线2018| 26uuu久久天堂性欧美| 日本中文字幕一级片| 123成人网| 亚洲男人天堂2023| 久久夜色精品亚洲| 国产在线播放一区| 性欧美.com| 精品国产第一福利网站| 日韩精品自拍偷拍| 国产人妻精品一区二区三区不卡| 老牛国产精品一区的观看方式| 国产伦精品一区二区三区视频免费 | 800av在线播放| 欧美成熟视频| 91久久在线观看| 在线观看麻豆| 色婷婷av一区二区三区大白胸| 99re这里只有| 亚洲调教视频在线观看| 91亚洲精品丁香在线观看| 免费在线观看黄色| 欧美日本国产一区| 97精品在线播放| 理论电影国产精品| 亚洲在线播放电影| 国产亚洲精品精品国产亚洲综合| 亚洲无亚洲人成网站77777| 青青视频在线免费观看| 久久影院视频免费| av观看免费在线| 亚洲妇女av| 日韩av手机在线| 欧美18xxxxx| 在线一区二区视频| 九九热免费在线| 美女视频网站久久| 一区二区三区免费看| 日韩久久一区| 美女国内精品自产拍在线播放| 国产人妖在线播放| 亚洲制服丝袜av| 男人的天堂影院| 亚洲深夜av| 日韩欧美三级一区二区| 99精品在免费线偷拍| 国产一区二区三区18| 亚洲天堂视频网| 亚洲柠檬福利资源导航| av影片在线播放| 亚洲国产精品第一区二区三区| 精品无人区一区二区三区| 最新日韩精品| 在线色欧美三级视频| 一二三四区视频| 亚洲最大成人网4388xx| 精品无码国产一区二区三区51安| 免费在线日韩av| 亚洲精品一区二区三区樱花| 曰本一区二区| 久久久久久久久久av| 毛片在线播放网站| 欧美精品视频www在线观看| 久久久全国免费视频| 99re免费视频精品全部| 香蕉视频禁止18| 国产精品大片免费观看| 免费看成人午夜电影| 欧美成人xxxx| 久久久久亚洲精品成人网小说| 蜜桃免费在线| 7777精品伊人久久久大香线蕉的 | 一本久久综合亚洲鲁鲁五月天| www亚洲色图| 国产精品18久久久久久久网站| www.中文字幕在线| 国产精品久久天天影视| 国产一区二区免费电影| 国产91欧美| 亚州av一区二区| 在线观看免费高清完整| 亚洲国产欧美自拍| 国产精品欧美综合亚洲| 疯狂蹂躏欧美一区二区精品| 麻豆网址在线观看| 99久久精品国产一区| 手机av在线网| 久久动漫亚洲| 99久久免费观看| 国产探花一区二区| 国产精华一区| 95精品视频| 国产精品福利无圣光在线一区| 污视频网站在线免费| 在线精品高清中文字幕| 天天色棕合合合合合合合| 91精品久久久久久久99蜜桃| 亚洲黄网在线观看| 午夜久久福利影院| 黑鬼狂亚洲人videos| 国产日韩影视精品| 在线视频 日韩| 国产成人小视频| 亚洲综合av在线播放| 玖玖在线精品| 男人日女人逼逼| 欧美国产另类| 四虎免费在线观看视频| 国产一区二区三区网| 韩国一区二区三区美女美女秀| 精品国产一区二| 国产日韩精品入口| www.久久.com| 国产成人精品一区| 色资源二区在线视频| 久久久久久久亚洲精品| 手机av免费在线| 欧美精品一区二区三区国产精品| 日本中文字幕视频在线| 永久免费看mv网站入口亚洲| 青春草在线观看| 国产视频精品免费播放| 天天摸天天干天天操| 亚洲成人激情在线| 黄色片一区二区| 精品国产网站在线观看| 亚洲大尺度视频| 精品免费日韩av| 成人午夜免费福利| 精品久久免费看| 午夜精品小视频| 精品国产网站在线观看| 人妻偷人精品一区二区三区| 欧美大片在线观看一区| 亚洲av少妇一区二区在线观看| 欧美一区二区在线视频| xxxx国产精品| 精品粉嫩超白一线天av| 好吊视频一二三区| 日韩精品久久久久久久玫瑰园 | av福利精品导航| 熟妇人妻久久中文字幕| 91在线一区二区三区| 免费在线观看成年人视频| 91在线国产福利| 欧美多人猛交狂配| 中文字幕第一区二区| 黄色激情小视频| 国产精品美女久久久久久久久久久 | 久久影视电视剧免费网站| www在线免费观看视频| 欧美久久精品一级黑人c片| 欧美v亚洲v| 日本精品在线视频 | 一区福利视频| 国产黄色一级网站| 青青草国产成人av片免费| 九九九九九伊人| 丁香五精品蜜臀久久久久99网站| 亚洲av成人无码一二三在线观看| 国产亚洲欧美日韩在线一区| 国产精品www爽爽爽| 亚洲精品国产精华液| 日本中文字幕网| 欧美性xxxxxx少妇| av手机免费看| 亚洲欧美制服中文字幕| 视频三区在线| 久久久在线免费观看| 天天综合网站| 97超碰人人看人人| 伊人久久大香线蕉无限次| 亚洲一区二区在线看| 极品日韩av| 亚洲 欧美 另类人妖| 成人小视频在线| 国产午夜精品福利视频| 亚洲成av人片一区二区| 亚洲中文字幕在线观看| 日韩成人免费视频| 免费高清完整在线观看| 91av在线视频观看| 亚洲一区二区av| 精品久久久久久综合日本| 色一区二区三区四区| 国产一区二区三区小说| 美女视频黄免费的久久 | www.99久久热国产日韩欧美.com| 变态调教一区二区三区| 国产一区二区在线免费| 亚洲aaa级| 韩国无码av片在线观看网站| 久久在线精品| av黄色一级片| 亚洲免费大片在线观看| 精品国产乱子伦| 亚洲国产精品久久久久| 黄色在线观看网站| 国产精品爽黄69| 亚洲传媒在线| 乱人伦xxxx国语对白| 国产一本一道久久香蕉| 激情五月激情综合| 欧美性生活一区| 蜜桃成人在线视频| 91高清免费在线观看| 亚洲精品国产九九九| 椎名由奈jux491在线播放| 久久精品一区| 国产高清自拍视频| 亚洲第一成年网| 囯产精品久久久久久| 欧美另类暴力丝袜| 电影中文字幕一区二区| 亚洲精品中文字幕在线| 日韩精品视频网| 少妇真人直播免费视频| 黑人巨大精品欧美一区二区一视频 | 精品国产大片大片大片| 欧美亚洲一区二区在线观看| 黄色在线播放| 国产成人一区二区三区| jjzz黄色片| 久久视频一区二区| 国产精品美女久久久久av爽| 精品美女被调教视频大全网站| av小次郎在线| 亚洲一区二区三区视频| 欧美一区二区三区另类| 成人av毛片在线观看| 国产精品久线在线观看| 中文字幕欧美色图| 日韩视频免费中文字幕| 天天综合在线观看| eeuss中文| 国产美女一区二区三区| 久久久久久蜜桃| 精品精品国产高清一毛片一天堂| 欧美xxxx黑人又粗又长| 久久艹中文字幕| 另类天堂av| 天天摸日日摸狠狠添| 欧美日韩电影在线播放| www.欧美日本韩国| 国产精品v欧美精品v日韩| 亚洲三级免费| 亚洲精品国产91| 欧美日韩成人在线| 成人在线app| 国产精品精品软件视频| 亚洲在线观看| 免费视频91蜜桃| 在线播放国产精品二区一二区四区| 黄a在线观看| 国产精品大全| 乱人伦精品视频在线观看| 69精品无码成人久久久久久| 欧美日韩国产一级片| 99热国产在线中文| 久久亚洲午夜电影| 麻豆成人av在线| 豆国产97在线 | 亚洲| 亚洲精品日韩久久久| 日韩一级视频| 777精品久无码人妻蜜桃| 欧美国产精品一区二区三区| 国产片高清在线观看| 欧美一级淫片丝袜脚交| 久久综合av| 亚洲精品乱码久久久久久不卡| 欧美午夜精品久久久久久孕妇 | 国产精品看片你懂得| 亚洲精品视频网| 国产精品久久久久av| 欧美午夜一区二区福利视频| 日本高清www| 欧美一区二区免费|