發表日期:2019-11 文章編輯:小燈 瀏覽次數:4380
出于多端投放和開放生態的考慮,閑魚開始接入整個阿里小程序體系。閑魚在9月份迅速上線了第一個小程序魚塘小程序,由于剛接觸不熟悉小程序體系,整體性能上有比較大的優化空間,主要表現在以下問題:
在分析具體優化 Case 之前我們先看下小程序架構,先要了解架構才能清楚如何去優化具體的業務代碼。阿里小程序采用支付寶小程序的架構,這里引用一張支付寶小程序頁面生命周期圖。
目前市場上所有小程序都采用邏輯(worker)和渲染(webview)分離的方式。這樣帶來的好處是:
但是這樣也會造成一個顯而易見的問題,頁面性能強依賴 webview 和 worker 的通信效率:
小程序邏輯和渲染分離的架構造成它與傳統 H5 性能優化方式上的一些差異。小程序性能優化可以參考看下官方推薦的一些性能優化建議,簡單來講需要特別注意 setData 操作的頻次和傳輸數據,接下來我們結合魚塘小程序具體案例一塊探討下。
魚塘小程序是一個類似興趣圈子下的內容聚合場景,用戶在這里可以無限加載瀏覽內容,還會點擊 Tab 切換瀏覽不同維度的內容。我們需要重點考慮小程序加載流暢度、滾動順滑度以及 Tab 點擊切換時候界面響應速度。之前版本的魚塘小程序在低端 Android 機(Android vivo Y67)上首屏時間接近6s,在 iPhone 7P 上滾動幀率平均在 34fps - 60fps,點擊 Tab 切換瞬時幀率在 30fps 左右,下面針對幾個具體 Case 討論解決方案。
『BEFORE』
『AFTER』
從打開小程序到最終渲染出來經歷了短暫的白屏
加載整體耗時包括小程序容器初始化、數據請求以及請求結果返回到渲染,需要針對每個時期做優化
『BEFORE』
『AFTER』
頁面滾動掉幀感明顯,粘手度低
針對小程序 webview 和 worker 通信的機制,我們需要減少 setData 的調用頻率與傳輸數據大小。
『BEFORE』
『AFTER』
加載幾頁 Feeds 后,切換 Tab 開始出現明顯卡頓,需等待 3-5 秒,部分 Android 機器上更為嚴重,偶爾會 Crash
Tab 切換時在短時間內做了太多事情:切換 Tab Current 狀態、銷毀 Feeds 列表、展示 Loading 動畫、發起數據請求 -> 渲染新列表,這樣高并發大面積的內容更新導致小程序視圖層數據消費阻塞,從而產生卡頓感。
將 Tab 切換時的任務拆解開,分四個階段進行:
小程序容器通過離線緩存、數據預加載、小程序保活等機制來優化整體性能。然而在富交互場景中,webview 上的控件渲染會遇到很多性能瓶頸,目前阿里小程序支持在 webview 中內嵌 native 組件來提升整體性能,魚塘小程序中有大量視頻內容場景,使用的 video 組件就是 native 原生組件。這類組件脫離 webview 線程之外渲染,但是由于是覆蓋在 webview 之上,所以在 webview 內無論怎樣修改 z-index 都無法將元素覆蓋在原生組件之上。
為了解決這個問題,小程序框架同學又設計了 cover-view ,它可以覆蓋在 native 組件之上,比如視頻上方的播放按鈕就可以用 cover-view 蓋上去。最終線上魚塘小程序通過同層渲染 video 組件之后用戶側體驗有比較大的提升。
經過優化之后,目前線上魚塘小程序相比之前版本有顯著提升:
針對這個業務場景下的小程序依然有很多可以繼續優化空間,例如我們將每個魚塘實例化獨自小程序,這樣可以針對每個魚塘小程序去進行保活等。此外在小程序性能優化相關上,我們認為可以在研發階段提供一個包含性能告警的容器,通過監聽 setData 的調用頻率與傳輸數據大小,對開發者一些可能會影響性能的代碼寫法進行提示。未來我們會持續在閑魚小程序生態建設上發力,整合集團研發資源建立閑魚小程序研發全鏈路最佳實踐,提供外部服務商入駐開發三方小程序的良好體驗。
iPhone 11 Pro、衛衣、T恤等你來抽,馬上來試試手氣 https://www.aliyun.com/1111/2...
本文作者:閑魚技術-頌晨、玉縝
本文為云棲社區原創內容,未經允許不得轉載。
日期:2019-11 瀏覽次數:5554
日期:2019-11 瀏覽次數:12008
日期:2019-11 瀏覽次數:4379
日期:2019-11 瀏覽次數:5419
日期:2019-11 瀏覽次數:5280
日期:2019-11 瀏覽次數:7221
日期:2019-11 瀏覽次數:5185
日期:2019-11 瀏覽次數:15796
日期:2019-11 瀏覽次數:4757
日期:2019-11 瀏覽次數:6544
日期:2019-11 瀏覽次數:5406
日期:2019-11 瀏覽次數:4594
日期:2019-11 瀏覽次數:10797
日期:2019-11 瀏覽次數:8351
日期:2019-11 瀏覽次數:5105
日期:2019-11 瀏覽次數:4338
日期:2019-11 瀏覽次數:8991
日期:2019-11 瀏覽次數:4680
日期:2019-11 瀏覽次數:4869
日期:2019-11 瀏覽次數:4887
日期:2019-11 瀏覽次數:4507
日期:2019-11 瀏覽次數:5056
日期:2019-11 瀏覽次數:10311
日期:2019-11 瀏覽次數:5485
日期:2019-11 瀏覽次數:5466
日期:2019-11 瀏覽次數:4921
日期:2019-11 瀏覽次數:12366
日期:2019-11 瀏覽次數:7380
日期:2019-11 瀏覽次數:7931
日期:2019-11 瀏覽次數:4875
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.