精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品一区二区三区四区色| 成人无码av片在线观看| 中文字幕在线观看播放| 亚洲免费高清| 日韩av在线免费| 中文字幕日本最新乱码视频| 巨骚激情综合| 麻豆成人久久精品二区三区红| 久久人人爽亚洲精品天堂| 国产91在线免费观看| 欧美aaaxxxx做受视频| 26uuuu精品一区二区| 国产精品美女久久| 久久久久久久蜜桃| 九九视频精品全部免费播放| 欧美色精品天天在线观看视频| 一级全黄肉体裸体全过程| 亚洲卡一卡二卡三| 久久久噜噜噜| 另类少妇人与禽zozz0性伦| 中文视频在线观看| 国产激情欧美| 亚洲国产一区二区a毛片| 日本不卡二区| 精品人妻一区二区三区日产乱码| 国产精品视区| 久久成人综合视频| 精品无码在线视频| 激情不卡一区二区三区视频在线 | 欧亚一区二区三区| 加勒比海盗1在线观看免费国语版| 污视频在线免费| 久久99久久久久| 久久99精品国产99久久6尤物| 人妻丰满熟妇av无码久久洗澡 | 亚洲第一精品在线| 亚洲欧美日产图| 亚洲国产精品久久人人爱潘金莲 | 免费看国产黄色片| а√在线天堂官网| 亚洲免费伊人电影| 日韩欧美视频一区二区三区四区| 亚洲国产精品成人久久蜜臀| 久久精品国产久精国产| 欧美性一区二区三区| 久久久国产成人| 欧美激情理论| 亚洲国产精品一区二区久| 国产女同无遮挡互慰高潮91| 精品国模一区二区三区| 午夜精品爽啪视频| 青青草综合视频| 免费观看久久久久| 久久精品视频免费| 欧美日韩精品免费看| 天堂在线视频免费观看| 国产成人午夜精品影院观看视频| 91大神福利视频在线| 青娱乐免费在线视频| 66视频精品| 国产亚洲精品激情久久| 精品人妻一区二区三区香蕉| 国产福利资源一区| 欧美精选在线播放| 欧美精品成人网| 成人爱爱网址| 日韩欧中文字幕| 国产特级黄色大片| 波多视频一区| 色综合婷婷久久| www.国产区| 日韩欧美少妇| 欧洲激情一区二区| 亚欧在线免费观看| 成人做爰免费视频免费看| 欧洲精品中文字幕| 午夜免费看毛片| 英国三级经典在线观看| 婷婷国产v国产偷v亚洲高清| 欧美精品自拍视频| 北岛玲heyzo一区二区| 亚洲成年人影院| 奇米影视亚洲色图| 国产福利电影在线播放| 狠狠躁夜夜躁久久躁别揉| 免费高清在线观看免费| 小黄鸭精品aⅴ导航网站入口| 日本丶国产丶欧美色综合| 欧美成人三级在线播放| 99精品国产一区二区三区2021| 亚洲国产精品va在线| 国产人妻大战黑人20p| 中文字幕一区二区av| 88国产精品欧美一区二区三区| 中文字幕在线观看1| 国产91精品精华液一区二区三区| 欧美日韩国产高清视频| 国产视频中文字幕在线观看| 欧美日韩亚洲精品内裤| 涩涩网站在线看| 色爱综合av| 久久精品国产99国产精品澳门 | 亚洲欧美伊人| 庆余年2免费日韩剧观看大牛| 91中文字幕在线播放| av成人动漫在线观看| 亚洲三区在线观看| 天堂√中文最新版在线| 欧美一区二区在线不卡| 免费网站在线高清观看| 伊人久久成人| 91热精品视频| 激情小视频在线| 亚洲小说欧美激情另类| 亚洲第一天堂久久| 亚洲人成伊人成综合图片| 欧美福利视频在线| 91精品国产乱码久久久| 国产欧美日韩麻豆91| 久久综合久久网| 欧美激情三级| 日韩在线视频网| 少妇久久久久久久| 99久久婷婷国产| av在线观看地址| 一区二区视频| 免费不卡在线观看av| 国产第一页在线观看| 91欧美激情一区二区三区成人| 波多野结衣激情| 日本国产一区| 中文字幕日韩高清| 69av视频在线观看| 久久一日本道色综合| 黄色影院一级片| 大伊香蕉精品在线品播放| 色综合久久精品亚洲国产| 91中文字幕在线播放| 一区在线观看免费| 日韩av卡一卡二| av亚洲免费| 国产精品video| 国产三级视频在线看| 色哟哟亚洲精品| 性欧美成人播放77777| 亚洲一区国产一区| 精品国产综合久久| 中文字幕在线高清| 日韩精品在线免费观看| 国产午夜免费福利| 2017欧美狠狠色| 精品人妻一区二区三区四区在线 | 亚洲第一av在线| 国产第一页第二页| 成人黄色小视频在线观看| 成人在线视频一区二区三区| 136导航精品福利| 久久免费福利视频| 日批视频在线播放| 狠狠躁天天躁日日躁欧美| 亚洲午夜久久久久久久久红桃| 亚洲欧美网站| 日日夜夜精品网站| 亚洲成人高清| 视频直播国产精品| 国产美女裸体无遮挡免费视频| 亚洲色图一区二区| 亚洲欧美激情一区二区三区| 尤物网精品视频| 女女同性女同一区二区三区91| 亚洲综合在线电影| 日韩少妇与小伙激情| 亚洲第一精品网站| 色综合色狠狠天天综合色| 国产一区在线观看免费| 国产精品资源网| 91丨porny丨探花| 精品一级毛片| 91入口在线观看| 久草免费在线视频| 中文字幕亚洲图片| 成人久久久精品国产乱码一区二区| 天天免费综合色| 亚洲一级黄色录像| 国产.欧美.日韩| 青青草原av在线播放| 91影院成人| 国产三区精品| 999国产精品亚洲77777| 欧美乱妇40p| 久草视频在线看| 日韩午夜电影av| 加勒比在线一区| 一区二区三区在线免费观看| 中文字幕一区二区三区人妻| 极品少妇xxxx精品少妇| 天天夜碰日日摸日日澡性色av| 日韩精品1区| 国产精品区二区三区日本| 日本精品在线中文字幕| 久久免费视频在线| 色老头视频在线观看| 亚洲电影天堂av | 麻豆精品国产传媒mv男同| 国产高清www| 日韩欧美三级| 久久66热这里只有精品| www.欧美| 国产精品igao视频| 超碰在线网站| 日韩在线免费av| 男女污污视频在线观看| 日韩三级在线免费观看| 天天天天天天天干| 疯狂做受xxxx欧美肥白少妇| 婷婷伊人五月天| 国产喷白浆一区二区三区| 国产av一区二区三区传媒| 久久精品99久久久| 91av在线免费播放| 国产精品久久777777毛茸茸| 成年人视频网站免费| 91免费精品| 亚州欧美一区三区三区在线| 色婷婷久久久| 国产精品区免费视频| 亚洲三级av| 亚洲综合大片69999| 欧美在线se| 国产精品影片在线观看| 欧美三区四区| 欧美一区二区三区免费视| 超清av在线| 午夜伦理精品一区| 99久久精品免费看国产小宝寻花| 欧美精品中文字幕一区| 91xxx在线观看| 亚洲天堂av电影| 欧美xxx.com| 精品亚洲一区二区三区在线播放| 天堂在线资源网| 国产婷婷色综合av蜜臀av| 天天射,天天干| 亚洲精品国产精品自产a区红杏吧| 好吊视频一二三区| 精品成人在线观看| 韩国av免费在线观看| 亚洲精品按摩视频| 亚洲 欧美 激情 小说 另类| 日韩精品在线免费观看| 国产网站在线播放| 综合欧美国产视频二区| 色综合久久久久综合一本到桃花网| 少妇高潮久久久久久潘金莲| 久久日韩视频| 欧美激情视频给我| av资源网在线播放| 日本电影亚洲天堂| 秋霞国产精品| 91久久精品视频| 一区二区三区在线免费看| 精品国产电影| 国产探花一区| 亚洲欧洲一区二区福利| 综合视频在线| 成 年 人 黄 色 大 片大 全| 亚欧成人精品| 亚洲综合欧美在线| 国产九色精品成人porny | 岳乳丰满一区二区三区| 欧美高清www午色夜在线视频| 国产叼嘿视频在线观看| 亚洲第一天堂无码专区| 国产在线91| 欧美巨乳在线观看| 精品众筹模特私拍视频| 国产91精品黑色丝袜高跟鞋 | 亚洲一区二区免费| 国产精品欧美大片| 日韩理论片在线观看| 你懂的网址国产 欧美| 又粗又黑又大的吊av| 另类调教123区| 中文在线观看免费视频| 国产欧美日韩另类视频免费观看 | 福利在线播放| 久久6免费高清热精品| 亚洲妇女成熟| 91精品在线国产| 日韩欧美国产大片| 国产精品jizz在线观看老狼| 一本久久综合| 中文字幕中文在线| 91麻豆福利精品推荐| 国产一区二区精彩视频| 一本久久精品一区二区| 国内精品久久久久久久久久久| 亚洲精品视频网上网址在线观看 | 亚洲乱码精品久久久久.. | 国产不卡在线| 欧美专区中文字幕| 亚洲日本一区二区三区在线| 亚洲春色在线视频| 99综合在线| 亚洲黄色片免费| 久久久另类综合| 精品在线视频观看| 欧美日韩在线观看一区二区 | 中文字幕网址在线| 日韩av最新在线| 超碰caoporn久久| 国产精品高清免费在线观看| 久久a爱视频| 日韩专区第三页| 麻豆成人久久精品二区三区小说| 精品无码在线视频| 亚洲国产中文字幕| 国产激情视频在线播放| 久久久精品久久久久| 巨胸喷奶水www久久久| 欧美日韩另类丝袜其他| 在线视频亚洲| 久草视频福利在线| 亚洲女同一区二区| 91中文字幕在线视频| 正在播放国产一区| 台湾佬成人网| 麻豆精品传媒视频| 9色国产精品| 日本精品一二三区| 亚洲综合免费观看高清完整版| 国产又黄又大又爽| 精品国偷自产在线视频| 精品福利在线| 天天好比中文综合网| 久久久久久夜| 中文字幕在线1| 色欧美片视频在线观看| 嫩草研究院在线| 国产成人av网址| 精品理论电影在线| 亚洲精品中文字幕无码蜜桃| 久久久久久免费网| 成人毛片一区二区三区| 亚洲色图50p| 99只有精品| 亚洲自拍的二区三区| 久久成人免费日本黄色| 人人干在线观看| 欧美一区二区精美| 黄页网站大全在线免费观看| 国产精品播放| 国产日韩欧美高清免费| 免费看污黄网站在线观看| 色婷婷久久久亚洲一区二区三区| 国产视频网址在线| 国产精品中文字幕久久久| 国产精品久久久久久| 杨幂一区二区国产精品| 亚洲一区二区三区四区五区黄 | 亚洲精品男人的天堂| 亚洲欧美国产va在线影院| 国产精品扒开腿做爽爽爽视频软件| 日韩午夜视频在线观看| 日韩电影在线观看电影| 国产黄a三级三级| 日韩一二三区不卡| 2020日本在线视频中文字幕| 欧美精品一区在线发布| 久久国产精品第一页| 青青草国产在线观看| 日韩av在线免费观看| 国产综合av| 男女激烈动态图| 91在线免费播放| 五月婷婷丁香在线| 欧美国产日韩二区| 亚洲人和日本人hd| 91网址在线观看精品| 亚洲成年人影院| 在线视频婷婷| 国产精品swag| 欧美aaa在线| 久久亚洲AV无码| 国产亚洲欧美视频| 日韩欧美另类中文字幕| 中文字幕日本最新乱码视频| 国产精品嫩草久久久久| 黄色一级a毛片| 国产成人自拍视频在线观看| 91精品国偷自产在线电影| 国产制服丝袜在线| 91精品国产福利| 香蕉视频亚洲一级| 日本wwwcom| 亚洲国产高清aⅴ视频| 欧美一级一区二区三区| 国产精品丝袜视频| 国产精品久久国产愉拍| 色欲人妻综合网|