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

重度使用Flutter研發模式下的頁面性能優化實踐

開發 開發工具
淘寶特價版是集團內應用Flutter技術場景比較多,且用戶量一億人以上的應用了。目前我們首頁、詳情、店鋪、我的,看看短視頻,及評價,設置等二級頁面都在用Flutter技術搭建。

 [[399257]]

一、Flutter頁面性能優化的挑戰

淘寶特價版是集團內應用Flutter技術場景比較多,且用戶量一億人以上的應用了。目前我們首頁、詳情、店鋪、我的,看看短視頻,及評價,設置等二級頁面都在用Flutter技術搭建。

我們發現使用Flutter經常會遇到性能問題。因為Flutter嚴格意義上僅是一種“UI渲染框架”,它通過異步來來實現子線程渲染UI,并且通過Skia保證兩端“渲染的一致性”。但子線程執行并渲染,且動態庫打包這些策略并非“一片通吃”,會導致損耗頁面打開性能及可交互時長的增加。試想,app啟動時動態庫加載的dynamic binding(影響啟動時長),頁面啟動時主線程啟動了頁面,但ui渲染卻需要等待Flutter的子線程執行并渲染,低端機上頁面會短暫白屏(頁面未渲染影響可交互時長,雖然fps欺騙性的提高了)。

Flutter有性能瓶頸,但重度使用Flutter研發的我們是如何做到性能優化的?本篇會就基礎鏈路各Flutter頁面的優化策略,分享我們的實踐!

二、模塊級混合——首頁的優化實踐

首頁最開始是全部采用Flutter+DXFlutter(面向Flutter的UI動態化框架)實現,業務實現一切ok,但發版的時候測試同學發現首頁的啟動性能突然比上個版本跌了1s。這個問題是必然的,因為Flutter是動態庫要延遲加載和綁定,同時DXFlutter大量的模板邏輯也會極大消耗性能。

問題很難解,當時我們就是否繼續全部Flutter,但優化引擎和DXFlutter,還是回退為Native實現產生了分歧。如果回退Native,則首頁及搜索的分類tab技術方案都要切回native,成本巨大。最終,我們根據特價版的現狀及經驗,拍板采用:app啟動時首頁推薦等采用Native實現,但搜索實現的其他tab分類繼續采用Flutter,如此不會對搜索業務研發模式產生影響,又能避免Flutter帶來啟動性能的損耗。

但是該方案會遇到一個技術挑戰:我們使用的Flutter混合棧FlutterBoost僅支持頁面級混合,還不支持頁面內模塊級混合。因為Flutter是單window的設計策略,如果模塊級混合必然會遇到Flutter頁面生命周期的管理及渲染窗口尺寸的一致性問題。

前一個問題是因Flutter是單引擎引起的。當模塊切換的時候,新模塊顯示需要連接引擎重新觸發渲染,否則頁面會空白或不可交互。這個在FlutterBoost中早就做了。

后一個問題是單window,Flutter頁面上彈框Native頁面都會導致頁面布局問題。

但模塊級混合明顯是技術可行的,我們在AliFlutter正物、來一等同學的參與下,很快就開發出了可以容納Native、Flutter甚至其他類型如WebView的模塊級混合容器。如下圖:

我們通過一個FlutterWrapperVC,基于FlutterBoost解決單引擎渲染問題,根據模塊可見性切換FlutterEngine和虛擬機,保證當前可見的模塊能正常渲染,并執行底層的Flutter代碼;然后通過Window大小強制修正解決了單window問題,解決布局問題。最后我們也考慮到了模塊復用性,將這個能力組件化,并封裝到這里:LTaoUIKit。

  1. pod LTaoUIKit '0.0.3.89' 

基于這個方案之后,這么改造后,首頁的啟動實踐至少提升1s。更重要的是首頁的研發就如圍棋里建了兩眼,活出了一片。后面推薦頁基于native dxcontainer實現后,就直接可以復用之前淘寶等成熟app的優化經驗。

后面我們優化RT,DX模板打底,圖標本地化,圖片壓縮多管其下,首頁啟動性能穩穩提升。

同事后面對首頁的啟動鏈路做了分步治理,并做了較為體系化的治理建設:

三、數據預取與FFI——純Flutter頁面的優化實踐

上面探討模塊混合Flutter頁性能優化,本節則講整個頁面均是Flutter實現的優化策略,這應該也是大部分Flutter開發者常遇到的。通過這種方式,以特價版詳情頁為例,我們在之前的優化結果上又再優化了100多ms,以下是具體數據:

  • Android(vivo y67): 80~100ms
  • iOS(iPhone6): 120~200ms

首先,Flutter頁面會遇到哪些性能瓶頸?從Flutter機制看,他其實是個能較好解決“多端一致問題”的“UI渲染框架”,雖然提供了通過bridge訪問native,但Flutter bridge性能極差,涉及到了線程切換,字符編碼等問題(后面會講)。所以,我們使用Flutter應該避免直接通過Flutter來解決IO等資源訪問的工作,而且這些工作應盡量放在native側。

顯然app一張頁面的啟動,往往涉及到請求服務端準備渲染數據。同時,從路由跳轉,到通過Engine初始化Native的VC或者activity到Engine構造Rasterrizer還涉及Engine層面的線程等待。這些時間其實可以做不少事情,我們可以將服務端數據請求放在這個階段,這就是我們希望做的“數據預取”。

其實“數據預取”在淘寶上已經大規模用了,但在Flutter頁面上所顯示的優越性則會更強,因為Flutter頁的多線程切換太多了,很容易就掉入channel bridge的陷阱。如我們詳情頁最開始也用了數據預取,但數據預取調用是從Flutter發起的,性能似乎有提升,但并不那么明顯。為什么?以下是從Flutter發起一個mtop請求的流程圖,可以從其中一窺究竟:

上圖UI線程是指Flutter的ui線程,并非系統主線程。請求從“開始”處開始,兜兜轉轉,要經歷2次線程切換等待,多次的數據encode和decode,造成的性能損耗還是蠻多的,分析如下:

  • 首先,一旦某個情形下設備cpu緊張,則Flutter的請求/數據返回會遲遲無法送達到native或者Flutter。
  • 其次,當數據量大的情形下,數據encode和decode也會耗費更多時間。
  • 最后,頁面打開經常遇到Engine和Native之間誰先啟動的問題。比如VC啟動了,這個時候并不能馬上就給Flutter發送message,因為Flutter Engine可能還沒有準備好,此時message丟失,雙方都不知道。這個問題在FlutterBoost中遇到不少。

我們最終通過以下策略來解決:

  • 數據預取在Native側發起,在頁面路由構造Native VC/Activity時,就馬上發起mtop等請求。
  • mtop返回的數據優先不通過channel bridge返回給Flutter層,而是通過ffi機制供Flutter直接讀取。
  • 上面native側必須暫存數據,但為避免長久引用造成資源泄漏,采用LRU策略緩存數據(iOS不能用NSCache,猜猜為什么)。
  • 考慮到有些頁面數據可以持久化存儲,供下次使用,我們構造了多級緩存策略。
  • 將上面能力全部組件化,以供其他業務復用。

詳細的設計如下:

首先,基于ffi和native側數據預取,優化后的數據請求鏈路如下:

右上角之所以還有channel bridge是為解決Native請求返回慢于Flutter頁面渲染的情形下的數據刷新。

其次,我們構建了多級緩存策略和緩存失效及復用策略,以支持部分頁面數據的持久化復用提升首屏渲染性能:

以緩存復用策略為例,我們支持以下策略:

  • 激進型:第二次請求直接使用上一次緩存數據,不再馬上刷新數據,待緩存自然過期后刷新。該策略適用于頁面數據不常變的情形。
  • 正常型:第二次請求可使用上一次緩存,但仍需請求并馬上刷新數據。該策略比較普適,適合數據變化不頻繁的情形。
  • 保守型:第二次請求不可使用上一次緩存,需請求最新數據。適合強實時性的頁面數據渲染。

最后,我們將這些能力做了封裝,比如iOS側,我們以單獨的SDK集成:

  1. pod LTPrefetch '1.0.1.19' 

目前基礎鏈路如詳情,我的,店鋪,mini詳情等都采用了這個方案進行優化,啟動實踐均有了不錯的提升。

四、其他優化實踐

其他還有很多優化實踐。有些是淘系已經實踐過的,有些是特價版根據Flutter的特點有所改動的。這里不詳細說了,僅就我們使用過的列個列表:

  • 詳情從首頁借圖。
  • 資源壓縮及本地預置:如首頁dx模板預置,Json壓縮及預置,圖片壓縮及預置。
  • 數據提前異步加載。如我的頁面數據,其實在用戶登陸的時候就會異步加載并緩存下來,然后通過上面的緩存更新策略來更新。
  • 優化服務端RT,精簡協議。

其他。

五、最后

其實我們的優化策略更多在上層應用上做了優化,UC那邊在Flutter Engine層面做了優化,后期可以考慮使用他們引擎,相信頁面打開性能會更上一層樓。

同時上面的ffi及數據預取也可以做的更激進一些。如通過Dart2Native的方式,完全實現Json數據的encode和decode本地實現,容器訪問的本地實現,估計還能提升至少50ms的時間。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2022-07-08 09:38:27

攜程酒店Flutter技術跨平臺整合

2016-08-12 10:23:28

javascriptChrome前端

2020-03-23 15:15:57

MySQL性能優化數據庫

2009-09-08 09:45:23

App Engine性

2010-07-06 09:07:09

2020-07-17 19:55:50

Vue前端性能優化

2020-03-30 14:00:21

Flutter前端代碼

2023-03-22 18:31:10

Android頁面優化

2022-07-22 14:45:46

SDKVolcRTC內存優化

2022-10-28 13:41:51

字節SDK監控

2021-09-24 14:02:53

性能優化實踐

2019-08-02 11:28:45

HadoopYARN調度系統

2021-09-02 10:10:59

技術VS Code實踐

2011-08-11 09:45:25

2019-05-21 09:40:47

Elasticsear高性能 API

2017-01-19 19:07:28

iOS進階性能優化

2024-02-02 15:21:08

工具頁面性能

2021-01-08 09:40:40

優化VUE性能

2023-09-06 08:14:34

性能優化模式

2023-07-24 09:03:38

汽車之家頁面性能監控
點贊
收藏

51CTO技術棧公眾號

国产精品一国产精品最新章节| 色999日韩欧美国产| 日韩视频第二页| 国产天堂在线| 国产精品自在在线| 91成人在线视频| 亚洲AV成人无码网站天堂久久| 国产欧美日韩电影| 狠狠综合久久av一区二区小说| 亚洲v欧美v另类v综合v日韩v| 国产夫绿帽单男3p精品视频| 美女精品在线观看| 久久99久久99精品免观看粉嫩| 日韩片在线观看| 99精品在线免费观看| 午夜免费久久看| 欧美日韩一区二区三区电影| 日本高清中文字幕二区在线| 国产久卡久卡久卡久卡视频精品| 国产91精品网站| 久视频在线观看| 第一sis亚洲原创| 亚洲国产欧美一区二区三区同亚洲 | 日本999视频| av3级在线| 亚洲久本草在线中文字幕| 日韩精品一区二区三区外面| 黄色片网站免费在线观看| 蜜臀a∨国产成人精品| 69影院欧美专区视频| 欧美亚洲日本在线| 欧美3p视频| 亚洲视频在线免费看| 国产精品无码网站| 波多野结衣在线一区二区 | 日韩精品网站| 亚洲精品自拍视频| 伦理片一区二区| 欧美一区在线观看视频| 911精品国产一区二区在线| 毛片av免费在线观看| 中文字幕在线直播| 午夜精品久久久| 久操手机在线视频| 老司机在线视频二区| 国产精品久久久久久亚洲伦| 日韩精品欧美在线| 丁香婷婷在线观看| 久久精品人人爽人人爽| 欧美性xxxx69| 免费在线观看一级毛片| 91免费在线播放| 精品无人区一区二区三区竹菊| 人妻偷人精品一区二区三区| 成人综合婷婷国产精品久久| 国产精品一区二区三区在线观| 午夜精品小视频| 国产成人精品亚洲777人妖| 亚洲精品免费网站| www.精品视频| 不卡av在线网| 久久riav| 番号在线播放| 亚洲欧洲精品天堂一级| 99热都是精品| 免费在线观看av电影| 亚洲高清久久久| 男女激情无遮挡| 成人性教育av免费网址| 色先锋资源久久综合| 国产第一页视频| 四虎永久精品在线| 欧美大片免费久久精品三p| 美女网站视频在线观看| 欧美成人一区在线观看| 精品亚洲一区二区三区在线播放| 精品国产成人亚洲午夜福利| 色综合狠狠操| 久久久人成影片一区二区三区观看| 国产精品二区一区二区aⅴ| 亚洲一区二区伦理| 国产欧美中文字幕| 亚洲第一免费视频| 91一区一区三区| 亚洲ai欧洲av| 日本欧美电影在线观看| 欧美日韩在线另类| 亚洲精品20p| 国产亚洲精品美女久久| 国产亚洲欧美另类中文| 印度午夜性春猛xxx交| 夜久久久久久| 91久久精品美女| 亚洲色图欧美视频| 国产精品美女www爽爽爽| 17c丨国产丨精品视频| 亚洲伊人av| 宅男在线国产精品| 免费在线观看你懂的| 亚洲成人日韩| 国产大片精品免费永久看nba| 国产麻豆免费视频| 91麻豆精东视频| 亚洲黄色网址在线观看| 欧美极品免费| 亚洲二区中文字幕| 无码人妻精品中文字幕| 欧美亚洲一区| av一区二区三区在线观看| 九九热视频在线观看| 亚洲精品乱码久久久久| 不卡av免费在线| 青青久久av| 欧美日本亚洲视频| 一级全黄裸体免费视频| 久久青草欧美一区二区三区| 男人天堂网站在线| 成人亚洲网站| 亚洲欧洲偷拍精品| 91九色丨porny丨肉丝| 国产精品亚洲午夜一区二区三区| 日韩精品一区二区三区外面| 国产免费拔擦拔擦8x在线播放| 777xxx欧美| 国产三级aaa| 日韩精品欧美精品| 久久久综合香蕉尹人综合网| 日本孕妇大胆孕交无码| 91精品国产一区二区人妖| 91精品国自产在线| 先锋a资源在线看亚洲| 国产精品自拍首页| 国产亚av手机在线观看| 日韩一区二区三区免费看| 在线免费看视频| 麻豆精品在线播放| 日韩av电影免费播放| 成人勉费视频| 亚洲免费av网址| 男人午夜免费视频| 91视频免费播放| 日韩中字在线观看| 欧美电影在线观看免费| 久久人人爽国产| 日韩一卡二卡在线| 亚洲国产cao| 性猛交╳xxx乱大交| 国产一区二区三区自拍| 3d蒂法精品啪啪一区二区免费| 黄网站视频在线观看| 欧美精品日日鲁夜夜添| 999精品视频在线观看播放| 久久99精品一区二区三区| 中文字幕在线中文字幕日亚韩一区| 久久伊人国产| 超碰91人人草人人干| 国产手机精品视频| 亚洲最新在线观看| 日韩av手机在线播放| 99riav国产精品| 热re99久久精品国产99热| 青青热久免费精品视频在线18| 在线电影av不卡网址| 亚洲手机在线观看| 亚洲欧美日韩在线播放| 亚洲图片欧美另类| 亚洲欧美网站| 亚洲色图自拍| 麻豆国产一区二区三区四区| 欧美国产乱视频| 欧洲天堂在线观看| 欧美三级电影精品| 黑人巨大精品一区二区在线| 成人深夜在线观看| 欧美伦理视频在线观看| 五月婷婷六月综合| 超碰97网站| 欧美成人精品一区二区男人小说| 日韩中文字幕在线视频| www.五月婷| 色8久久人人97超碰香蕉987| 日韩精品一区二区三区在线视频| 国产98色在线|日韩| 男女高潮又爽又黄又无遮挡| 日本一二区不卡| 99在线视频播放| 蜜臀国产一区| 欧美精品在线观看| 你懂的免费在线观看视频网站| 欧美久久久久久久久久| 国产午夜激情视频| 国产精品丝袜91| 国产精品成人无码专区| 免费观看在线色综合| 青青草综合在线| 精品中文一区| 国产精品xxxx| jizz欧美| 91高潮在线观看| 爆操欧美美女| 亚洲日本中文字幕| 亚洲乱码国产乱码精品精软件| 色偷偷88欧美精品久久久| 老妇女50岁三级| 国产精品视频在线看| 日本不卡视频一区| 久久精品国产网站| 无码人妻丰满熟妇区五十路百度| 欧美1区视频| 亚洲一区二区四区| 九九视频免费观看视频精品| 99久久无色码| 国产精品中文| 国产精品欧美激情| 美女网站在线看| 欧美丰满老妇厨房牲生活 | 韩国日本美国免费毛片| 午夜视频一区| www亚洲国产| 精品一区不卡| 欧美精品国产精品久久久 | 日韩精品视频免费在线观看| 亚洲国产www| 91.com在线观看| 中文字幕在线日亚洲9| 日韩欧美中文字幕在线播放| 国产精品suv一区二区69| 1024成人网| 欧美a级片免费看| 中文字幕第一区二区| 91精品人妻一区二区三区蜜桃欧美| 丁香六月综合激情| 女同性αv亚洲女同志| 国产在线不卡视频| 天天综合成人网| 精品一区二区三区在线播放| 天天干天天草天天| 欧美aaaaa成人免费观看视频| 日本黄网站免费| 久久久777| aaaaaa亚洲| 欧美96一区二区免费视频| 日本老熟妇毛茸茸| 久久国产精品99国产| 欧美两根一起进3p做受视频| 午夜亚洲性色视频| 哪个网站能看毛片| 久久亚洲二区| 妓院一钑片免看黄大片| 三级不卡在线观看| 亚洲成人福利在线观看| 免费高清视频精品| 欧美激情第3页| 国产精品一级二级三级| 少妇极品熟妇人妻无码| 成人黄色a**站在线观看| 亚洲av成人片无码| 国产亚洲精品福利| 亚洲黄色网址大全| 亚洲人妖av一区二区| 久久久久久久久久久97| 亚洲成人资源网| 国产精品视频123| 欧美调教femdomvk| 国产理论片在线观看| 精品久久久久久久久久久久久久久久久 | 精品国精品自拍自在线| 天天干天天摸天天操| 亚洲天堂第二页| 黄网站在线免费看| 午夜欧美不卡精品aaaaa| xx欧美xxx| 国产精品永久免费在线| 九色精品蝌蚪| 蜜桃传媒视频第一区入口在线看| 欧美日韩激情| 大陆极品少妇内射aaaaaa| 一区二区三区四区五区精品视频| 日韩av一二三四| 狠狠色狠狠色合久久伊人| 中国免费黄色片| 国产女人aaa级久久久级| 青青草手机在线观看| 欧美色道久久88综合亚洲精品| 中文字幕视频二区| 精品久久久网站| av网页在线| 欧美激情久久久| 免费观看成人性生生活片 | 思思久久精品视频| av成人老司机| 情侣偷拍对白清晰饥渴难耐| 欧美日韩在线观看视频| 国产熟女一区二区三区五月婷| 日韩av网站导航| 激情在线小视频| 日本一区二区在线播放| 精品中文字幕一区二区三区四区| 欧美精品一区二区三区久久| 一本精品一区二区三区| 国产精品少妇在线视频| 福利电影一区二区| 成人午夜免费影院| 欧美视频不卡中文| 精品国产av一区二区| 在线播放精品一区二区三区| 99riav视频在线观看| 亚洲va国产va天堂va久久| 禁断一区二区三区在线| 久久亚洲中文字幕无码| 国产一区久久久| 黄大色黄女片18免费| 狠狠躁夜夜躁人人爽超碰91| 不卡av中文字幕| 波霸ol色综合久久| 欧美成a人片在线观看久| 国严精品久久久久久亚洲影视 | 欧美成人免费一级人片100| 综合日韩av| 精选一区二区三区四区五区| 国产综合视频| 特种兵之深入敌后| 国产精品久久久久婷婷| 欧美日韩a v| 亚洲免费视频观看| 黑森林国产精品av| 国产精品久久久久久久小唯西川 | 一区二区三区在线观看动漫 | 亚洲国产福利在线| 三级网站视频在在线播放| 91精品国产综合久久久久久久久 | 亚州国产精品久久久| 日韩中文一区二区| 欧美另类videos| 国产精品1区2区| 99久久婷婷国产综合| 欧美疯狂性受xxxxx喷水图片| 北岛玲一区二区三区| 国产极品jizzhd欧美| 国产探花在线精品一区二区| 日韩 欧美 高清| 久久亚区不卡日本| 一级黄色av片| 一夜七次郎国产精品亚洲| 国产精品亚洲d| 亚洲精品中文字幕乱码三区不卡| 日本特黄久久久高潮| jizz日本在线播放| 欧美日韩精品一区二区三区蜜桃 | 午夜精品久久久久久久99樱桃| 天堂网在线资源| 欧美一级在线亚洲天堂| 欧美日韩xxxx| www.com黄色片| 亚洲丝袜美腿综合| 国内爆初菊对白视频| 1769国产精品| 精品不卡一区| 精品久久久99| 亚洲一区二区在线观看视频| 日韩在线视频免费| 国产91免费看片| 欧美aaaa视频| www.啪啪.com| 在线观看亚洲一区| 免费在线观看av| 国产成人一区二区三区免费看| 99国产精品久久久久久久| 精品国产av无码| 欧美高清性hdvideosex| 久久不射影院| 日韩av在线电影观看| 国产专区欧美精品| 中国一级免费毛片| 中国人与牲禽动交精品| 日韩欧美一级| 久久久久久久久久久免费视频| 中文乱码免费一区二区| 国产xxxx孕妇| 日韩av快播网址| 中国成人一区| 日本黄色网址大全| 337p亚洲精品色噜噜狠狠| 91av久久| 杨幂一区欧美专区| 不卡的看片网站| 国产又大又长又粗| 欧美亚洲国产精品| 亚洲成av人片乱码色午夜| 亚洲熟女一区二区| 欧美日韩综合在线免费观看| 国产又色又爽又黄刺激在线视频| 日韩欧美亚洲日产国| 粉嫩欧美一区二区三区高清影视 | 九九久久免费视频| 亚洲欧美综合v| 超碰成人免费| 天堂在线一区二区三区| 色婷婷精品大在线视频| 伦理在线一区|