客户端突如其来的“白屏”等待该如何解决?

简介:一起由离线包重构引起的“白屏”等待现象的排查和解决案例


——本文选自《阿里云SRE技术期刊》2021年02月刊

移动端的混合架构模式给 App 开发带来了崭新的空间,通过 H5 构建的业务模块可以实现高效快速的版本迭代,满足多样化的业务需求。为了弥补 H5 技术的部分性能不足,mPaaS 客户端框架为开发者提供了“离线”机制。


开发者在接入 mPaaS H5 容器后,配合 mPaaS 移动发布服务,可以让客户端方便地从本地加载 H5 业务包,极大地提升了 H5 应用的加载效率。需要注意的是,这套离线机制的接入过程必须要严格按照文档来进行,一些细微的错误可能导致离线机制失败,给 H5 应用的加载性能带来影响。


这篇文章将和大家分享一起由离线包重构引起的“白屏”等待现象的排查和解决案例。



1. 问题背景

我们(阿里云金融线 SRE 团队)接到客户的反馈:开发者对所有线上离线包进行了一轮的整合和重构,发版后发现 H5 应用的加载性能出现较大的退化:在网络好的情况下会有一个短暂的“白屏”等待时间,在网络较差的情况下,甚至完全无法完成页面的加载。更详细的信息包括:


1) 前一天晚上在生产环境进行离线包版本更新,发现发布白名单内的用户访问离线包出现性能退化

2) iOS 和 Android 双端均存在这个问题

3) 白名单内共有 20 多个内部用户,非外部用户,对外业务没有实际影响

4) 非白名单内用户访问的还是老版本的离线包,没有出现问题

5) 开发侧的变更内容包括:

a) 全量离线包更新,更新数量大概是60个左右

b) 旧离线包的架构是 1 个公共资源包 + N 个普通资源包

c) 新离线包的架构是 3 个公共资源包 + N 个普通资源包



2. 分析与排查

根据症状 “网络好的情况下会有一个短暂的“白屏”等待时间,网络较差的情况下,甚至完全无法完成页面的加载”,我们首先怀疑的是离线包的“离线”机制失败了,流量 fallback 到了线上资源。推测“白屏”等待时间是 Web 资源网络下载和加载慢导致的,如下图所示:


要验证这个推测,我们需要通过抓取 HTTP 层面的报文来确认这个问题,抓包方法可参考文后资料了解详情[1]。从网络包中我们观察到,每次打开 H5 应用,均存在不同程度的资源文件拉取行为,这些 Web 资源大的有几十 MB,通过网络加载速度较慢,如下图所示:


和客户进一步沟通确认,这部分资源来自于一个新增的公共资源包。根据 mPaaS H5 容器的接入要求,公共资源包的注册需要在容器初始化的时候手动指定,而普通资源包则不需要这样的操作,可参考文后资料了解详情[2],[3]


结合当时的情况(仅进行了离线包的云端重构,新增 3 个全局资源包,客户端 App 并未重新发版)推测:这部分 fallback 流量产生原因是客户端未注册新的公共资源包,因此容器不知道这部分资源在本地的映射,只能从网络 fallback 地址获取,而这里的核心 JS 资源的加载慢导致了“白屏”等待的性能问题。


根据上述分析进行客户端代码检查,确认客户端确实没有对新增的公共资源包进行注册。开发者按照文档重新对这个细节进行处理,打包测试后确认问题消失:不再有 fallback 的请求,“白屏”等待的问题也得到了解决。



3. 小结

开发者在 mPaaS H5 容器在接入和使用上需要对一些细节投入特别的关注,比如离线包的验签和全局包的使用等。因为 H5 容器存在 fallback 机制,所以即使“离线”失败,容器也是可以“正常”加载业务包的内容的,开发阶段开发者往往容易忽略掉“离线”对性能层面的影响。建议开发者在联调和上线的过程中,对于离线机制的工作情况予以检查和确认,可以通过抓包的手段从外部确认没有额外的、非必要的 fallback 请求产生,最终的目的是发挥离线包的性能优势。


参考文档

[1]如何抓取 HTTP 报文(Mac OS/Charles):https://help.aliyun.com/document_detail/159161.html

[2]Android管理离线包:https://help.aliyun.com/document_detail/112553.html

[3]iOS管理离线包:https://help.aliyun.com/document_detail/112928.html





《阿里云SRE技术期刊》

《阿里云SRE技术期刊》2021年02月刊重磅发布啦,囊括了事件要闻、应用说明、最佳实践、测试环境搭建、问题排查等众多技术干货,感兴趣的小伙伴速来围观~~


关注公众号「mPaaS」回复“SRE期刊”立即下载原文



-END-

动态-logo.gif

原文链接:https://developer.aliyun.com/article/782920?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52259.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman打开一直加载白屏

问题:以前用的好好的,突然有天白屏打不来,一直加载中无响应 1、上网搜教程,环境变量也设置了POSTMAN_DISABLE_GPU、true 2、%appdata%目录下的postman文件也删除了(postman未登录的慎删,可以搜教程应该可以…

微信小游戏可视化开发工具

我们来自微信小游戏的一个小团队,我们希望每个人都可以创建自己的小游戏,分享自己的创意,所以我们实现了一个门槛极低的游戏开发工具,在设计的时候我们尽量注意概念简单同时又可以实现各种类型的游戏,当前还是内测阶段…

基于tkinter制作的一个策略小游戏

目录 前言 登录界面 主界面 宣政殿 地图 吏部 兵部 户部 刑部 工部 礼部 御书房 后宫 宗人府 御马监 锦衣卫 司礼监 京城 后记 前言 前年本科毕业时,利用暑假的时间学习了一点tkinter,当时比较痴迷《君成录》、《皇帝成长计划》等策略养成…

AI绘画初体验(6pen平台)

最近AI绘画似乎很火热,今天体验了AI绘画。 使用平台:6pen 似乎对幻想出来的图片效果不是很好,而对语言简练、写实的图片效果很棒! 展示: 1 宇航员在火星上,坐着椅子下象棋,背景是远处的地球 2 …

【回答问题】ChatGPT上线了!给我推荐20个比较流行的AI作画模型!

目录 给我推荐20个比较流行的AI作画模型给我推荐20个比较流行的AI作画模型代码给我推荐20个比较流行的AI作画模型 好的,下面是20个比较流行的AI作画模型: DALL-E GAN Deep Dream CycleGAN StyleGAN pix2pix SketchRNN BigGAN ProGAN ESRGAN SPADE BigVAE StackGAN VQ-VAE 3…

AI绘画——ChilloutMix模型(现实真人,实现写实逼真的图像)

目录 重要提示:首先,我从不建议再生“真实”人物的图像, 但是,照片“逼真”图像。 本人郑重声明:本模型原则上禁止用于训练基于明星、公众人物肖像的风格模型训练,因为这会带来争议,对AI社区…

ai绘画软件“数画”上线元宇宙真人虚拟头像,技术远超国外

近日,国内AI绘画应用软件“数画”官方发布一条公告,引起整个AI绘画业界的轰动。公告显示“数画”上线真人元宇宙AI虚拟头像制作功能,并于2022年11月18日开始为画友正式投入服役。此种技术仅需几秒就可以将自已的照片或用手机自拍AI绘画成元宇宙中你的样子…

计算机英语ppt演讲稿,英语ppt演讲稿

英语ppt演讲稿 英语ppt演讲稿(1) Hello everybody, I am glad to have this opportunity to stand here and we communicate, we all know both sides of the same coin have, and we also have both positive and negative life: bright, happy, happy, hope, etc. This repre…

详解Docker!

(永久免费,扫码加入) 来源丨网络 本次分享Docker学习教程,有点长~ 目录 1 容器简介1.1 什么是 Linux 容器1.2 容器不就是虚拟化吗1.3 容器发展简史2 什么是 Docker?2.1 Docker 如何工作?2.2 Doc…

chatgpt赋能python:Python怎么建服务器?

Python怎么建服务器? 作为一名具有10年Python编程经验的工程师,我深入研究了Python的一些高级特性,其中包括Python如何建立服务器的方法。Python是一个高级的编程语言,可以轻松创建服务器应用程序,并为您的网站提供高…

通过Java代码的方式将jar包以及快照上传至nexus上,通过与chatgpt对话的方式完成

通过Java代码的方式将jar包以及快照上传至nexus上 release库snapshots库 与chatgpt的对话 release库 release库的直接在nexus页面上找接口就可以,通过restTemplate调用即可成功 import org.springframework.core.io.FileSystemResource; import org.springframewo…

chrome插件推荐

chrome插件推荐 chrome的一些插件, 真的能很大程度上提升我们的工作效率。而且chrome的插件极其丰富, 基本你想要的功能,都能找到对应的插件,接下来给大家推荐几个我自己在用的。 插件 1、Momentum 新标签页 简介: 超漂亮的新标签页面。每日更新精彩背景壁纸图片&…

2022 开放原子全球开源峰会 OpenAnolis 分论坛携干货来袭

开源运动伊始,Linux 操作系统作为 GNU 运动最有力的补充,成为所有开源人心中经典的开源项目代表。 Linux 社区是当前全球最大也是最知名的开源社区,在 Linux 操作系统的温床之上,衍生出了许多深受开发者喜爱的开源操作系统&#…

免费开放注册| 首次!微软全球八大研究院齐聚,带你尽享全球学术盛宴

由微软全球八大研究院携手倾力打造的首届微软研究峰会 Microsoft Research Summit 2021将于10月19日至21日在线上举办。来自全球科技界、学术界、工业界的同仁们将相聚云端,激荡智慧,共同探讨拓展科技边界的前沿研究,以多元视角呈现科技创新中…

2022 SDCon 全球软件研发技术大会,19大技术主题破企业之寒

随着信息革命的飞速发展,软件已深入人类生活的方方面面,深刻而彻底地改造了人类世界。Boolan秉承“全球专家、卓越智慧”的宗旨,我们特邀近40位全球软件领域的技术领袖以及一线实战专家,融合主题演讲、互动研讨、案例分享、高端培…

24位出品人已确认,开放原子全球开发者大会(OADC)分论坛速览

开源已成为全球软件技术和产业创新的主导模式,是技术应用和产业数字化发展的基石,支持开源,发展开源,将是我国实现技术创新和突破的有效途径。国家软件发展战略将培育开源生态作为重点任务,国民经济和社会发展“十四五…

2022 CCF中国开源大会—开放原子开源创新发展论坛即将开幕

开源已经成为全球数字科技创新发展的大趋势。"行业发展,人才先行",开源生态的繁荣发展,离不开人才的培育。推进开源教育、建立产学研一体化开源创新人才培养体系显得至关重要。开放原子开源基金会作为中国首家开源基金会&#xff0…

2021年大学生可以参加的科创竞赛-最全信息汇总

2021年大学生可以参加的30个科创竞赛-信息汇总(一) 1. “中国软件杯”大学生软件设计大赛:2. “泰迪杯”数据挖掘挑战赛:3. 未来杯高校AI挑战赛:4. “发现杯”全国大学生互联网软件设计大奖赛:5. “华为云杯…

中兴通讯 2022第二届未来IP网络发展论坛完美落幕,携手探索未来创新

最近中兴通讯在北京举办了2022第二届未来IP网络发展论坛,这已经是中兴举办该论坛的第二个年头,意义非凡,值得一提的是,中兴通讯在本次论坛邀请了中国信息通信研究院和三大运营商参与,与此同时他们还共同签署并发布了《…

报名丨麻省理工科技评论全球新兴科技峰会(北京)

由麻省理工科技评论在全球举办了超过 18 年的 EmTech 新兴科技峰会即将落地中国。 谷歌、亚马逊、高通、英伟达、IBM、ARM、D-Wave、麻省理工学院、宾夕法尼亚大学、阿里巴巴、腾讯、科大讯飞、华大基因、富士康、Hyperledger、DFJ、Flagship、Third Rock、金沙江创投...... …