专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

告别空窗白屏,飞猪客户端启动体感极致优化实践

  作者飞猪技术团队
  审校蔡芳芳背景
  启动优化在客户端永远是一个绕不开的话题,几乎所有APP都持续在此投入精力,追求极致的秒出、直出。最近几年也一直有讨论几大头部APP启动快慢问题的声音出现,拼多多、支付宝都是业界公认在启动方面做的特别突出的。由此可见,APP的打开速度,体感流畅性,用户内心已经默默记在了小本本上,甚至可能在潜意识里影响了他的打开行为。
  对于飞猪来说,首页是用户可见的飞猪首个页面,是全行业的流量入口,飞猪的门面,它给用户理解飞猪是什么样子的奠定了基调。业务设计和产品为了打造飞猪独特的心智、给予用户创新性的交互体验以及增加入口的吸引力,飞猪使用了大量的动图和视频能力,很多新颖的交互方式和设计在业界也具有独创性。
  可变高banner行程卡抽屉顶部动画
  但是随着交互复杂度的不断增加,首页的渲染路径越来越长,页面结构层级越来越深,在交互复杂度上已经逐渐赶超手淘。这也导致首页体验的根基性能,开始逐渐受到影响,如白屏、卡顿、闪动、加载慢等。以上问题已经逐渐影响到了用户的使用体感,因此针对首页性能问题的集中梳理与优化,已经迫在眉睫。
  双十一之前,我们针对以上问题进行了一波集中优化,包括启动速度和启动体感,最终基本达到了冷启动和首次安装全部直出的效果:
  冷启动:
  首次安装:
  启动度量方式演进启动时长
  业界最通用的度量方式,从启动开始,并设置某一时间点作为启动结束,通过埋点上报的方式统计APP的启动时长。它的好处是能够从宏观上来统计APP在所有用户上的启动时长,从而进行启动分析。问题在于结束时间点的设定,什么时间点能够认定为首页启动结束呢?是首页开始加载,还是首页上的元素全部加载完成,还是首页可交互?这没有一个标准的答案。而且这些数据是否能够完美代表用户的启动体感,这里要打一个大大的问号,比如启动过程中首页有一段时间的白屏,有几张图片没有加载出来,这些是很难通过启动时长来完整表达的。分帧录屏
  分帧录屏示例:
  通过分帧录屏,能够比较清晰的分析APP启动过程中每一帧的状态,哪些帧是白屏的,哪些帧是空窗的,其他APP在启动过程中用了哪些黑科技,通过这种方式都能猜出个大概。并且,这种方式是最接近用户体感的,如果从体感角度出发,能帮助我们发现大量之前没有发现的问题。在这种度量标准下,完美的启动就是以16ms为一帧,每一帧都完整有内容,无白屏无空窗。问题是这种方式很难从宏观角度分析问题,单个case波动较大。启动时长分帧录屏
  最好的启动方式是宏观的启动时长微观的分帧录屏,二者结合起来,即能以用户为视角出发进行优化,也能从宏观上保证整体的启动性能。优化方案
  本次优化将启动体感分为两个阶段,一是启动流程的优化,二是启动后首页交互优化。启动流程优化
  根据这次的目标,要从效果上做到录屏逐帧肉眼直出,所以除了关注统计指标外,首次把录屏效果纳入进来,因此更要关注加载中的细节体感,数据为辅,以人的体感要求为目标。1。启动速度优化启动项编排
  通过统一的启动调度器来管理启动任务,合理分配CPU资源,并按照任务类别进行合理的调度编排,以此来优化启动速度。
  如下图所示:启动编排最核心的是要梳理启动项的优先级以及依赖关系,找到满足最少必要依赖前提下的最长路径,然后对该路径上的节点一一进行优化,其余的启动项按照优先级安排在启动过程中并行执行。
  红色是核心任务组,黄色是阻塞任务组,绿色是预执行任务组
  最终,我们梳理出了进首页前必须的阻塞任务共26个,他们执行过程中由于存在不可拆分的长耗时任务,以及依赖关系,会出现一些等待,因此预执行任务组中也有一部分任务会穿插进去填补这些空隙。
  进而我们可以得到目前飞猪启动阶段中的一条最长任务路径。可以看到,后续如果我们还能有对阻塞请求有策略或性能上的优化的话,那么启动速度就还能再加快一些。
  最终90设备启动耗时提升超过1秒。
  以上瀑布流均为进入首页前的启动项流程,对于进入首页后和首页并行的启动项,由京杭两地基础线与业务线的同学合作优化,结合业务场景,合理编排任务,将首页前3s的帧率由3040帧优化到50帧以上。2。缓存图片加载优化
  本地存在图片缓存的优化场景:
  1。图片load加速:启动阶段,即使图片在磁盘中,图片的寻址也非常慢。通过提前解析缓存数据,建立图片索引,能减少几十到上百毫秒的耗时。
  2。view预创建:通过提前创建主体容器,将图片加载的时机提前。
  3。图片加载优化:我们使用的phenix图片库,经过手淘封装后,又被飞猪封装了一层,内部增加了许多逻辑判断,因此使用效率上要比原生的phenix要慢,我们跳过了封装库的使用,直接调用phenix加载图片,能减少几十毫秒的耗时
  4。嵌套容器渲染滞后:通过一定策略截取上一次的图片,绕过容器加载直接覆盖到指定位置,可实现模块的直出效果,并能够模拟点击。
  PS:以上问题在其他页面影响可以忽略不计,但在首页启动阶段,资源吃紧,小问题变大问题。3。图片切换优化
  图片切换过程中,正常流程会将原图清除,待新图下载好后再渲染,导致存在一定时间的空窗期,造成闪白。纯图场景:纯图场景不纯在图文不符的问题,可延后原图的清除时间,作为placeholder覆盖,待新图下载好后可做到平滑切换。图文场景:图文同时存在,由于文字的渲染速度较快,必须将前图清除,否则会出现图文不符的问题,这种情况使用打底图覆盖,避免纯白背景。4。完全无图片缓存
  常见场景:大促胶囊,榜单及其他动态模块。
  动态组件增加的场景,由于其不确定性,无法提前内置图片,无法遮盖,只能寄希望于网络速度。
  首页与二级页资源分配:这种场景下网络资源异常重要,但同时也有二级页在做资源已经图片的预加载,因此需要合理按照优先级分配加载时机和带宽,平衡首页与二级页的优化效果。
  渐进式图片加载:为了更快的内容填充,我们借鉴了微信大图浏览的图片加载方式。图片两段式加载,优先加载缩略图,原图下载成功后再替换。
  首页独立缓存区:目前APP内所有的图片资源缓存都由图片库统一管理,在二级页浏览图片较多后,首页的图片缓存会被清理,考虑到首页图片的优先级较高,可开辟一块独立的首页缓存,不与APP中其他图片共享资源,保证缓存不被清理。5。首次安装体验优化
  首次安装处于一个完全无缓存的情况,各个APP在这种情况下表现都不太好,会出现大面积的空窗。
  iOS:iOS端飞猪在权限申请阶段,会有一个idfa浮层在上方遮盖,用户点击完成后首页已基本完成渲染过程,所以飞猪iOS端在首次安装场景下是天然直出的。Android:Android不存在idfa浮层,我们借鉴了iOS的场景,将闪屏的时间做了延长,规避掉了首次安装大面积白屏的问题。支付宝首次安装必须登录,所以不存在此问题。启动后优化
  结合优化前收集到的槽点,我们把优化重点放在了信息流图片加载速度,进入首页前几秒的卡顿问题和首页资源管控上。1。网络图片加载速度优化
  网络图片加载速度受网络速度影响,首页信息流快速滑动过程中,会有大量的承接页预加载请求和视频的缓存加载请求等等,极大的影响了网络加载速度。
  通过视频预加载优化与直出预加载优化减轻了信息流快速滑动过程中的网络压力,将网络图片的加载速度稳定在了300ms左右。
  信息流视频缓存控制流程如下:
  优化后效果如下:
  横轴是信息流图片加载数量,纵轴是图片加载耗时,橙线是优化后的效果
  2。首页启动项编排优化
  目前有较多的启动项任务在首页刚出现时开始执行,导致APP启动后首页在几秒内处于非常卡顿的状态。核心思路是将这部分启动项重新梳理,按照优先级放到合适的时机去执行同时又不对原有逻辑造成影响,避免大量启动项堆积造成的卡顿。
  优化后将首页启动后3s内的帧率从1030帧稳定到了50帧以上3。资源位管控
  之前首页pop没有针对运营配置高帧gif浮层做强管控,很可能上线不符合标准的资源导致首页卡顿,需要建立更加完善的管控机制。目前CRM加强了对图片资源的管控,可以针对不同图片类型限制图片大小,图片尺寸与格式限制,同时可以检测gif动图的帧率并对其进行限制。4。首页CPU占用优化
  目前首页有多处使用lottie的场景,lottie在正常播放过程中会占用一定的CPU资源,如首页顶部的刷新头,动画播放过程中会占用30左右的CPU,哪怕是一个很小的lottie动画。且首页是常驻在APP的生命周期内的,会将这一影响带到其他页面。
  这次将首页的lottie场景全部统一收口改造,隐藏、离开页面、不在可视范围内等所有情况将所有lottie一律暂停播放。
  优化效果Android端启动时间优化
  Android端在优化完成后,90设备启动耗时加快了1116ms,缩短超过1s。
  从上到下分别为飞猪、手淘、优酷、闲鱼、支付宝:
  优化前后对比冷启动
  以下对比均来自3、4年前的设备,目前属于中低端机型。
  所有对比均已包含启动速度优化,无需对比启动速度。
  右侧视频为优化后效果iOS
  设备:iPhone11ProMax
  未优化之前的焦点图空窗时间较长,其他组件包括金刚,特卖和榜单也能明显的看到从白到加载的过程。优化后在用户能看到的第一帧开始,所有组件已经全部加载完成了。
  右侧为优化后的效果Android
  设备:小米CC
  Android端之前的启动体验较差,会有大面积的白屏情况,现在可以做到首页的直出
  优化前后对比首次安装
  右侧为优化后的效果Android
  设备:vivonex3s
  针对首次安装的情况,我们同样做了处理,由于首次安装本地毫无缓存,所以不可避免的会出现较长时间的大面积白屏,预期让用户停留在白屏阶段,不如让用户等一下,能够直接看到完整的首页。
  APP横向对比冷启动
  从左到右分别是飞猪、手淘、闲鱼、优酷、支付宝
  下面图片为方便对比,做了慢放处理
  设备:iPhone11ProMaxiOS
  设备:vivonex3sAndroid
  猪客和其他APP的分帧对比
  我们测试团队开发的视频分帧对比能力在本次优化中起到了重要作用,通过分帧对比,我们能够从细节中分析其他APP的优化方案,以及我们自身存在的问题,并逐步对齐并超越。目前该能力已基本完成了产品化,能够做到每日全自动录制多个APP的启动状态并给出分帧报告。在双十一期间首页变阵频繁,资源位、氛围变化大的情况下保证了首页能够及时发现问题并予以修复。
  分帧效果:
  后续计划
  性能治理和包大小治理一样,打江山容易守江山难,制定一套规范(交互规范,资源规范,开发规范)以及日常的监控措施,才能够让首页启动体验稳定保持,这才是这次首页体验优化的重中之重。1。体感标准度量与制订
  单纯的启动时长无法完整表达体感,结合视频分帧,能够更合理的模拟人的体感视觉。若能做到16ms的视频分帧,那么根据每次启动记录到的分帧数据,可以设立标准区分出正常帧与异常帧。异常帧可以是白屏帧,图片未加载出的空窗帧等等,完美的启动体验每一帧都是无白屏无空窗的。通过计算异常帧在总帧数中的百分比,可以设定一个体感标准。当然启动时长作为辅助指标,也应该在参考范围内。2。监控与维护
  通过设定体感标准,每天或每段时间进行一次自动化体感检测,若不符合标准,则进行体感报警,督促开发进行优化。目前能够做到每天自动化给出分帧报告,但是并不具备自动化识别能力,这也是我们下一阶段要做的事情。
  规范的制定同样重要,什么种类,优先级的组件要使用何种优化方式,复用方式,是否内置等等;所有的资源位图片大小的标准,gif的标准,lottie的标准,poplayer的标准等等,需要严格制定与执行;在业务先赢的基础上,交互的复杂度最高水位在哪,不能无限制的追求交互的新鲜感而忽略最基础的体感。

血脂高的人需远离豆腐?医生这6种食物,建议平时少吃些高血脂再医学上称为血脂异常,是指脂肪代谢或运行异常,导致人体血液中血脂含量超过正常范围,表现为血液中胆固醇或甘油三酯过高,高密度脂蛋白过低的病症。近年来,高血脂已成为常见病多发病,李少莉重回工作岗位,耳钉丝巾都不见了,难道她接受了网友的批评李少莉重新回到工作岗位,似乎并没有受到太大的影响,但是其打扮却发生了很大的变化,难道是接受了网友们的批评和建议?这半个月大家都在等待李少莉的审查结果,大半个月都过去了,现在还是没有基于分析师工作台的客户资产流失挽回及其精准营销模型来源BanTech智库作者中国银行软件中心(合肥)徐梓丞一模型背景介绍1。背景介绍近年来,随着移动互联网的迅速普及,特别是受新冠肺炎疫情的影响,客户行为习惯加速向线上迁移同时,金融推动提案建议落地有声办出实效市政协主席会议成员视察提案办理工作情况自贡网记者李秋玥11月18日,市政协党组书记主席王猛率队,市政协主席会议成员对市政协十六届一次会议提案办理工作进行视察。市委常委市政府副市长吴伟陪同视察。视察组深入江苏天钧动力电池山西省发改委发布规划,太原晋中忻州吕梁阳泉将迎来新机遇11月16日,山西省发改委发布了山西中部城市群高质量发展规划(20222035年)解读(以下简称规划),太原晋中忻州吕梁阳泉将迎来发展新机遇。该规划期限为20222035年,是以共极氪发布L4级无人驾驶概念车MVision,预计2024年具备量产条件11月17日,极氪官方宣布,基于浩瀚M(SEAM)架构打造的ZEEKRMVision概念车将于2024年具备量产条件。同时亮相的还有极氪与全球知名无人驾驶技术公司Waymo携手开发李少莉被评为劳模,曾带病工作晕倒最近热搜榜单,非李少莉莫属了。李少莉,最近一个耳熟能详的名字,经常霸占热榜。即使李少莉事件已经过了大半个月,热度不减反而一直上升,究竟李少莉有什么魅力所在呢,最近能一直保持热度。李北海将有两大高端的奥特莱斯,以后购物会不会有选择困难症?近日,一个高端购物品牌正式宣布进驻北海市,这就是中意奥莱品牌,将入驻北海国际康乐旅游港。从相关报道来看,中意奥莱预计进驻品牌达到160180个,包括奢侈品美妆运动休闲潮牌快时尚等等从小害羞内向和活泼开朗的孩子,成年工作后,差距凸显文莹妈在育儿群里面聊天,一个妈妈焦虑地说,我们家孩子胆子很小很害羞,带他出去他都不怎么敢跟其他小朋友一起玩。带孩子去亲戚家,他们一会儿就拉着我说要回家,见到亲戚也不敢打招呼。有时候茶不能久泡但能煮,这是为什么?泡茶,人人都会,烧一壶水,用水的温度温暖茶叶,就泡好了一杯香气四溢的茶。喝茶的人都知道,茶不能泡太多次数,但是有的茶还可以煮,那么问题来了,茶叶既然不能久泡,又为什么可以煮呢?茶为儿童软色情遍布全网?!孩子的这4种照片千万别乱发你有没有这样的经历?以前从来不发圈的姐妹或男同学,突然开始疯狂晒娃了!尤其宝宝刚出生的时候,每天都能刷到好几次,一句调侃一张孩子的裸照半裸照,或则宝宝光屁股换纸尿裤的视频。等宝宝两
任正非门徒,与华为闹翻之后,这一次又杀回来了?提起任正非门徒中最受争议的一个,莫过于昔日的华为太子李一男。与华为闹翻,起起伏伏之后,他这一次杀回造车圈。李一男还有机会吗?1。华为任正非门徒?李一男身上的标签很多,天才少年任正非现在买华为Mate50能用几年不过时?用三四年都不会过时的,毕竟作为华为最顶级的旗舰系列,只要你喜新厌旧,使用时长是有保障的。一是性能上。骁龙8作为今年下半年安卓端最顶级的性能,可以保证往后三年的流畅运行,吃鸡王者这些1995甲A回顾申花提前夺冠,范志毅金靴MVP,保卫成都,辽足降级足球助力团上一篇文章梦回甲A1994年第一届全国足球职业甲A全赛程回顾,哪一场最难忘,小编带大家一起回顾了一下职业联赛元年甲A所有比赛的赛程和赛果,期间穿插了一些球队的关键事件和球盘点NBA一叶障目的五大交易,76人目光短浅,尼克斯一蹶不振天下熙熙,皆为利来。天下攘攘,皆为利往。在物欲横流的商业联盟,上千万的大合同比比皆是,甚至一名名不见经传的小人物,在打出几场令人震撼的比赛后,身价也将水涨船高。但,在商业联盟,并非人物主攻手王云蕗抓住机会体现价值里约奥运会上,来自北京的主攻刘晓彤临危受命,帮助中国女排冲垮巴西队,就此成为郎平麾下的奇兵和福将。2022世锦赛,蔡斌带上了新一届北京女排主攻手王云蕗,延续了福将传统,她在世锦赛舞泸州籍运动员杨健将征战2022年跳水世界杯男子10米台2022年跳水世界杯将于10月20日至23日在德国柏林举行,共设9个比赛项目。10日,中国跳水队公布了参赛阵容。其中,陈芋汐和全红婵将出战女子十米台单双人两个项目,杨健和杨昊将分别珍妮巴斯谈揭幕战对勇士主队一般不会赢球员领戒指会过度兴奋直播吧10月13日讯近日,湖人老板珍妮巴斯做客TheRichEisenShow播客节目,在节目中她谈到了新赛季对阵勇士的揭幕战。北京时间10月19日上午10点,新赛季揭幕战,湖人将欧联杯0险胜北京时间10月14日凌晨3点,202223赛季欧联杯小组赛E组第4轮,曼联回到主场再战塞浦路斯球队奥莫尼亚。比赛中,卡塞米罗射门中框,麦克托米奈第93分钟绝杀。最终,曼联10再胜奥陈盈骏318贝尔首秀砍149林书豪2分广州力克四川收获赛季首胜北京时间10月14日,202223赛季CBA常规赛继续进行,广州男篮今日对阵四川男篮。双方前5次交手,四川3胜2负略占优势。本场比赛,广州队外援乔丹贝尔迎来首发,而四川队的塔比特今网友搞笑神评迟早把我送走篮球火小编整理了下网友对篮球火的几条搞笑评论,噗哈哈哈哈!乔丹看了流泪,科比看了心碎,詹姆斯看了深夜买醉也就乔帮主来了能拿两分,不好意思我说的是乔峰看NBA纯图一娱乐,要学技术还得巴西女排31意大利,闯进女排世锦赛决赛,跟塞尔维亚争冠军北京时间10月14日凌晨4点,2022女排世锦赛第二场半决赛较量结束了,最终巴西女排以下克上,31击败夺冠热门意大利女排,四局比分为252322252624和2519。巴西女排跟卫
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网