纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

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

11月3日 温柔冢投稿
  作者飞猪技术团队
  审校蔡芳芳背景
  启动优化在客户端永远是一个绕不开的话题,几乎所有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的标准等等,需要严格制定与执行;在业务先赢的基础上,交互的复杂度最高水位在哪,不能无限制的追求交互的新鲜感而忽略最基础的体感。
投诉 评论 转载

莫桑比克,人在囧途屋外印度洋的海浪在黑暗中时强时弱,以今天的经历,现在真的该睡觉了,但我想还是趁着记忆烫手、脑袋发胀时,写下今天的遭遇。一大早,驱车5个小时,从南非约翰内斯堡抵达莫桑比克首……满满的求胜欲!中国男篮集训队强手如云,杜锋力求0封日本男篮在11月14日下午5点43分,中国篮球之队官方微博官宣了男篮国家队集训名单,开始为2023年男篮世界杯亚洲区预选赛第一窗口期的比赛做准备。此次一共有16名球员入选了中国男……陕乒小将王晨策入选国乒集训队王晨策(左二)获得男单季军省乒羽网中心供图在上月底结束的2021年全国青年乒乓球锦标赛上,来自陕西省的18岁小将王晨策发挥出色,在男子单打项目上取得季军,这也是陕西省乒乓……CBA三消息广东成为后卫屏障,赵继伟送16助攻,贺希宁遭遇驱大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!CBA新赛季常规赛已经打完了三轮,广东队毫无意外地取得了三连胜的成绩,在此前的季前赛中,广东队遭遇两连败,当时球迷……脾胃弱的人,容易气血不足!这3个方法,脾胃不好的人别错过我们身边一定有这样的人,平时滋补保养品不停,但是依旧气血不足,精力不济。反而有的人天天萝卜白菜,依旧神采奕奕,面色红润,一看气血就不差。而造成这种情况的原因,其实在于我们的脾胃……爸爸驮起妈妈秀恩爱逗1岁女儿父母恩爱是对孩子最好的教育近日,永州的蒋女士正在家里站着吃东西,其丈夫悄悄来到她身边将她驼起来,蒋女士坐在丈夫肩膀上摇摇晃晃,其实当时还有点害怕。不远处1岁的女儿看着父母也跟着一起摇晃起来,当时宝宝看到……告别空窗白屏,飞猪客户端启动体感极致优化实践作者飞猪技术团队审校蔡芳芳背景启动优化在客户端永远是一个绕不开的话题,几乎所有APP都持续在此投入精力,追求极致的秒出、直出。最近几年也一直有讨论几大头部APP启动……新能源电车电池容量衰减测试骗局说到新能源汽车,目前值的就是电动车,电动车最贵的是电池,人们最担心的是也是电池,毕竟换一次大几万。各大车企为了打消人们顾虑都推出了各种质保策略,比如电池组衰减低于70或80可以……NBA晚报詹姆斯祝福陶乐西,篮网新秀一鸣惊人,霍华德被驱逐亲爱的小伙伴们假期快乐!经过了漫长的长草期,我们终于等来了新赛季的开始,今日NBA季前赛已经开打,篮网和湖人的首战以篮网大胜结束。明日有多场季前赛继续开打,勇士队晒出球员登机照……跌至1299元,6400万四摄最大1TB内存拓展,沦为标准千不管承不承认,现在的手机内存确实是越来越不够用了,早些年的时候64GB可以用得很爽的年代,早就已经一去不复返了。就现在的手机软件生态来说,一般都要128GB才能说勉强够用,想要……官宣中超大黑马射手王重伤,8场5球双手拄拐,点名犯规球员聚焦中超CBA,独一无二球迷媒体点击右上角关注,不会后悔的。。。中超第一阶段接近尾声,各队状态进入佳境,这是主教练希望看到的现象,不过随着比赛深入,球员也陆续进入疲……华为开发者联盟提供三大利器,鸿蒙生态跨入成熟质变新周期文丨壹观察宿艺在本次华为开发者大会2022(HDC)上,除了HarmonyOS系统全新升级,新发布的七大鸿蒙开发套件成为开发者关注的重点。开发者支持是鸿蒙生态实现三……
WPSOffice2019ForLinux个人版发布优德集团健康宝典秋冬喝的暖茶,力荐中国奇谭收官,你最喜欢哪个故事Office365被取代了!全员免费大升级又一款经典谷歌服务走到末路PS5机能优化不给力三方开发者痛苦假4K游戏将很普遍机海战术失效,蓝绿厂小米斗不过一个苹果杜锋杨鸣这次可以放心了,就算主力被关禁闭,但他们也不会翻车国内最新手机搜索引擎排名第二名是阿里家的微信重磅实名制!熊孩子乱花钱有救了泛泛之交便是好,深厚之交便是情12年来第二次升级!LinuxQQ新版发布年度旗舰新品来袭石头扫地机器人T7全方位升级!兼职的协议黑莓手机将停产是真的吗黑莓手机现在停产了吗关于形单影只的造句两尊大神!C罗单条Ins广告可赚160万刀冠绝全球梅西110总说“没时间运动”的人该醒醒了淘宝小号出售被骗经验教训美味的零食,让你休闲下午过得更加精致军人醉驾部队怎么处置的?古人用来送别的野菜,加入韭菜简单一拌,鲜香清爽,比香椿芽还好面对拆迁补偿不合理,你提高补偿的方法用对了吗?浅谈以儿歌伴奏能力训练为主线的学前教育专业钢琴教

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形