记一次H5应用轻量优化方案调研与实施

发布于:2024-09-18 ⋅ 阅读:(65) ⋅ 点赞:(0)

由于H5应用具备开发周期短、灵活性好的特点,所以OA项目应用功能开发过程中经常结合WebView +H5进行Hybrid模式开发,但Android 原生WebView客观存在的性能问题,导致H5应用加载速度慢,影响用户体验。基于OA H5应用中找到审批详情加载慢的原因,并对其优化。

一个页面在WebView中加载的粗略流程如下:

WebView初始化

当App首次打开时,默认是并不初始化浏览器内核的;只有当创建WebView实例的时候,才会创建WebView的基础框架;所以与浏览器不同,App中打开WebView的第一步并不是建立连接,而是启动浏览器内核

针对Android WebView的初始化,分为首次初始化与第二次初始化。

首次初始化时间:客户端冷启动后,第一次打开WebView,从开始创建WebView到开始建立网络连接之间的时间

二次初始化时间:在打开过WebView后,退出WebView,再重新打开WebView,从开始创建WebView到开始建立网络连接之间的时间

设备环境 首次初始化(ms) 第二次初始化(ms)
华为Mate 20 pro EMUI 10.1.0 (Android 10.0) 196.2 34.7
华为P20 pro EMUI 10.0.0(Android 10.0) 356.1 56.8
华为EH880 EMUI4.0(Android 6.0) 191.6 43.7

以上皆为在OA应用上测试15次得出的平均数据

OA App 版本 1.0.30.*

公司生产环境-通知公告全区

由此可见,WebView在首次比非首次初始化时间消耗很多;可以尝试将WebView首次初始化提前准备,作为一个优化点。

方案: 提前初始化WebView备用。

数据加载

根据W3C介绍的有关页面导航时序规范,给我们提供了navigation Timing交互性能检测指标,可以帮助我们量化有关数据加载的指标。

具体的参数说明可以在官方了解 Navigation Timing

在性能优化方面,我们可以通过Navigation Timing 帮我们省去了繁琐的手动断点的操作,而且提供了以前我们我们无法获取的数据,比如DNS和TCP连接所需的时间。同时,Chrome给我们提供了辅助插件 DevTools可以协助调试。

Performance指标

NekWork指标

从性能指标与网络请求的过程看出,在加载页面时对首屏展示的时间直接影响了整体页面的体验效果。Web页面是由许多个资源和请求、渲染、绘制等一起参与加载出来的,而每个资源(