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

国产精品欧美大片| 国产三级伦理在线| 日韩电影在线一区| 久久人体大胆视频| 国产大尺度视频| 成人三级网址| 久久天天做天天爱综合色| 国产精品激情av电影在线观看| 国产又粗又硬又长又爽| 蜜桃一区av| 欧美日韩一二区| 成人一级生活片| jizz日韩| 91在线观看下载| 91在线网站视频| 日韩精品久久久久久免费| 最新国产精品久久久| 亚洲欧美综合v| 中文字幕 欧美 日韩| 精品123区| 亚洲第一成年网| 亚洲天堂av免费在线观看| 日韩精品123| 国产黄色精品视频| 国产精品av在线| 国产 欧美 日韩 在线| 欧美aaaa视频| 国产一区二区三区欧美| 91精品啪在线观看国产| 国产一区二区高清在线| 欧美日韩综合在线| 成年人黄色片视频| 亚洲妇熟xxxx妇色黄| 国产精品人妖ts系列视频| 免费精品视频一区| 色哟哟中文字幕| 国产精品一级在线| 91久久精品视频| 一女二男一黄一片| 麻豆91在线播放免费| 国产成人在线一区二区| 日本在线播放视频| 亚洲欧美成人| 91av免费观看91av精品在线| 久久免费公开视频| 欧美三级乱码| 久久6免费高清热精品| 182在线观看视频| 国产大片一区| 久久精品国产综合| 成人在线观看高清| 一区二区三区网站| 欧美xxxx做受欧美| 特级片在线观看| 欧美在线高清| 久久99热精品这里久久精品| 亚洲av无码一区二区三区在线| 99久久夜色精品国产亚洲狼 | 午夜免费福利网站| 91成人小视频| 日韩视频在线永久播放| 欧美xxxx日本和非洲| 136福利精品导航| 精品国产免费久久| 国产69视频在线观看| 人体久久天天| 亚洲少妇激情视频| 亚洲少妇xxx| 欧美精品国产一区| 91av视频在线| 中文字幕一区二区三区免费看| 欧美aa在线视频| 91精品视频在线看| 东京干手机福利视频| 92精品国产成人观看免费| 久久成人资源| av黄色在线观看| 亚洲黄色性网站| 日韩人妻精品无码一区二区三区| 国产精品av一区二区三区| 欧美吻胸吃奶大尺度电影| 超碰在线资源站| 嫩草国产精品入口| 在线视频免费一区二区| 欧美三级日本三级| 亚洲一区二区成人| 成人av番号网| 日批免费在线观看| 国产精品久久久久久久久动漫| 米仓穗香在线观看| 成人免费网站视频| 欧美美女视频在线观看| 国产精品无码一区二区三| 欧美日韩久久精品| 久久久久久久国产精品视频| 五月婷婷六月婷婷| 国产成人99久久亚洲综合精品| 鲁片一区二区三区| 欧美人xxx| 日韩欧美福利视频| 黄色a级三级三级三级| 美女福利一区| 欧美大尺度在线观看| 精品人妻无码一区二区性色| 国产乱子伦一区二区三区国色天香| 国内精品视频在线播放| 日本黄色片在线观看| 天天操天天综合网| 久久精品无码一区二区三区毛片| 免费欧美激情| 久久免费视频观看| 国产精品久久久久精| 久久久99精品免费观看| 久久这里只有精品18| 国外成人福利视频| 精品在线观看国产| 久草国产在线视频| 狠狠网亚洲精品| 日韩欧美一区二区三区四区| 51精品在线| 日韩视频一区二区| 懂色av蜜臀av粉嫩av永久| 亚洲欧美久久久| 国产有色视频色综合| 四虎影视国产在线视频| 欧美日韩国产片| 色欲狠狠躁天天躁无码中文字幕| 在线欧美三区| av日韩中文字幕| av网站导航在线观看免费| 欧美日韩精品系列| 成人小视频免费看| 日韩经典一区二区| 日韩av一级大片| 日本美女一区| 亚洲乱码国产乱码精品精天堂| 国产在线精品观看| 福利91精品一区二区三区| 91精品国产毛片武则天| 国产精品亚洲四区在线观看| 日韩中文有码在线视频| 亚洲手机在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 精品久久久久久久免费人妻| 无码少妇一区二区三区| 8x海外华人永久免费日韩内陆视频 | 亚洲久久久久久久| 日韩综合一区二区| 日韩国产高清一区| av在线日韩| 最近2019中文字幕大全第二页| 亚洲天堂视频在线播放| 欧美激情一区二区在线| 爱情岛论坛亚洲首页入口章节| 精品成人影院| 国产欧美一区二区三区在线| 日韩专区在线| 日韩欧美一级片| 久久精品欧美一区二区| 99久久99久久综合| 成人在线看视频| 精品欧美激情在线观看| 国产精品啪视频| 国产在线69| 精品久久人人做人人爰| 中文字幕亚洲高清| 国产亚洲欧美在线| 老司机久久精品| 欧美日韩蜜桃| 久久资源亚洲| 欧美视频免费看| 久久99国产精品自在自在app| 男人天堂综合网| 色香蕉成人二区免费| 手机免费观看av| 国产东北露脸精品视频| 欧美 国产 综合| 欧美va久久久噜噜噜久久| 亚洲自拍小视频| 成人性生活av| 日韩三级影视基地| 天堂在线资源库| 欧美色综合影院| 久久精品视频9| 国产亚洲精品资源在线26u| 亚洲一二三av| 国产精品久久久久久模特 | 99re资源| 日本免费一区二区三区四区| xxx一区二区| 蜜臀av免费在线观看| 欧美午夜精品一区二区蜜桃| 久久黄色免费网站| 日本一区二区三区高清不卡| 国产大学生av| 日本麻豆一区二区三区视频| 男人添女人荫蒂免费视频| 欧美日韩国产一区二区三区不卡 | 视频二区在线| 欧美肥胖老妇做爰| av大片在线免费观看| 亚洲精选视频免费看| 三上悠亚ssⅰn939无码播放 | 国产aⅴ精品一区二区三区黄| 欧美日韩免费看片| 欧美风情在线观看| 自拍视频在线免费观看| 日韩高清中文字幕| www.四虎在线观看| 欧美日韩激情一区| 中文字幕高清在线免费播放| 亚洲韩国一区二区三区| 萌白酱视频在线| 久久久www成人免费毛片麻豆| 老熟女高潮一区二区三区| 九九精品视频在线看| 国产真实乱子伦| 亚洲精品护士| www.欧美黄色| 亚洲国产精品综合久久久| 天天好比中文综合网| 九色精品国产蝌蚪| 国产一区二区三区四区五区加勒比| 经典三级久久| 成人黄色av网| 人人玩人人添人人澡欧美| 日产日韩在线亚洲欧美| 17videosex性欧美| 欧美激情亚洲一区| 尤物视频在线看| 欧美尺度大的性做爰视频| 国产不卡在线| 久久国产精品影视| 成人影院www在线观看| 久久精品成人动漫| 精品国产丝袜高跟鞋| 精品国产一区二区三区在线观看 | 不卡在线视频| 亚洲人成在线免费观看| 免费黄网站在线观看| 日韩成人在线视频观看| 四虎影视在线观看2413| 亚洲精品一区二区网址| 四虎影视精品成人| 亚洲网址你懂得| seseavlu视频在线| 少妇高潮 亚洲精品| 香蕉视频免费在线播放| 久久精品国产综合| 影音先锋在线播放| 久久久亚洲国产| 国产免费拔擦拔擦8x高清在线人| 97视频免费观看| 悠悠资源网亚洲青| 国产精品成人一区二区三区吃奶| 日本一区二区三区视频在线| 国产免费亚洲高清| 久久一级大片| 国产麻豆乱码精品一区二区三区| 欧美电影在线观看免费| 欧美精品一区三区在线观看| 欧美精选一区二区三区| 亚洲一区高清| 中文字幕乱码亚洲无线精品一区 | 永久免费未视频| 亚洲精品乱码久久久久久日本蜜臀| 黄色一级视频在线观看| 图片区小说区区亚洲影院| 中文字幕一区二区人妻视频| 欧美老肥妇做.爰bbww| 精品人妻一区二区三区麻豆91| 精品国偷自产国产一区| 你懂的视频在线观看| 在线看日韩欧美| 牛牛精品视频在线| 热久久免费视频精品| 欧美性www| 国产精品美女xx| 精品午夜久久| 黄色片免费在线观看视频| 香蕉成人久久| 亚洲妇熟xx妇色黄蜜桃| 99精品久久99久久久久| jizzjizzjizz国产| 亚洲高清视频中文字幕| 日韩欧美国产另类| 日韩精品在线网站| 国产毛片在线| 久久久久久香蕉网| 国内精品伊人| 黄色99视频| 在线中文一区| 丰满少妇在线观看| 成人app下载| 国产传媒免费在线观看| 欧美性xxxxx| www.av网站| 一区二区欧美日韩视频| heyzo高清国产精品| 国产免费一区视频观看免费| 久久精品国产亚洲blacked| 亚洲精品成人三区| 亚洲尤物精选| 久久久久久无码精品人妻一区二区 | 91久久久精品| 久久97视频| www.射射射| 韩国三级中文字幕hd久久精品| 魔女鞋交玉足榨精调教| 亚洲精品亚洲人成人网| 最近日韩免费视频| 日韩精品在线看| 国产天堂在线播放视频| 成人午夜黄色影院| 欧美系列电影免费观看| 日韩激情免费视频| 成人激情文学综合网| 日韩欧美国产成人精品免费| 91国内精品野花午夜精品| 天天插天天干天天操| 欧美黑人极品猛少妇色xxxxx| 日本久久二区| 亚洲国产日韩美| 日韩精品一区第一页| 亚洲av无码一区二区二三区| 亚洲图片欧美色图| 亚洲精品国产av| 毛片精品免费在线观看| 99精品在线免费观看| 一区二区三区四区五区精品 | 午夜天堂精品久久久久| 第一区免费在线观看| 日本一区二区高清| 亚洲成人av网址| 亚洲欧洲视频在线| 精品国产免费人成网站| 久久婷婷开心| 麻豆精品网站| 久久久久亚洲av成人无码电影| 欧美午夜电影在线| 亚洲三级黄色片| 日本中文字幕不卡免费| 国内黄色精品| 亚洲一级片网站| 综合久久久久综合| 国产精品国产三级国产aⅴ| 不卡av在线网站| 在线综合色站| 777777av| 久久久精品日韩欧美| 久久精品99北条麻妃| 综合网中文字幕| 爱情电影网av一区二区| 国产 国语对白 露脸 | 国产日韩欧美一区二区三区四区| 国产一区美女| 菠萝菠萝蜜网站| 欧美这里有精品| 黄色在线播放网站| 超碰97人人人人人蜜桃| 亚洲精选久久| 色一情一交一乱一区二区三区| 欧美无乱码久久久免费午夜一区| 巨大荫蒂视频欧美大片| 亚洲最大成人网色| 在线亚洲伦理| 成人一级片免费看| 日韩欧美一二区| 亚洲黄色免费av| 亚洲欧美久久久久一区二区三区| 精品一区二区免费看| 九九免费精品视频| 日韩精品丝袜在线| 亚洲淫成人影院| 日本免费在线视频观看| 成人午夜伦理影院| 亚洲欧美一二三区| 免费91在线视频| 日韩精选在线| 网站在线你懂的| 午夜在线成人av| 69久久精品| 国产精品播放| 轻轻草成人在线| 国产一级二级毛片| 国产亚洲欧美日韩精品| 波多野结衣欧美| 尤蜜粉嫩av国产一区二区三区| 一区二区三区中文字幕精品精品| 天堂资源中文在线| 91日本视频在线| 久久九九国产| 久草视频免费播放| 在线观看国产精品日韩av| 国产成人在线中文字幕| www.激情小说.com| 性做久久久久久免费观看欧美| 在线毛片网站| 久久日韩精品| 国产成人在线免费观看|