WebView优化提高H5加载速度方案
WebView加载H5经历的过程图示
上图体现的是用户打开一个H5页面,经历的过程与代码内部所作的事情的对应关系。javascript
用户:无感知(WebView进行初始化)->看到白屏(DNS,Connection,接收页面)->看到Loading界面(静态资源加载完毕后,拉取数据)->展示(数据请求成功)css
再来看一下,一个Url是如何被浏览器加载而且呈现的,以前学习Java web知识的时候,接触到一个页面的加载流程为:html
接下来分析一下各个阶段的耗时状况前端
1."WebView初始化"阶段
众所周知,谈论Android APP的启动时间,咱们喜欢说冷启和热启,那么谈论WebView的初始化时间,咱们也从应用首次初始化和二次初始化,两个方面进行对比。java
使用同一Android机器,对同一个App的活动页,进行20次测试,取平均值,获得的结果以下:git
首次初始化时间
二次初始化时间
192.79 ms
142.53 ms
从上面的测试数据,咱们大概能够找到一个“页面加载老是很慢”的缘由之一:
前端H5开发人员在开发页面时,测算的页面加载速度,是从“页面创建链接后”做为起始时间,“页面数据展现完成”做为结束时间。而这样的话,到手机移动端上,他们须要再加上200ms左右的时间。github
那么如何解决这个问题呢?
这个作法很简单,只要在客户端启动后(或者某个契机点,只要在使用WebView以前),就初始化一个全局WebView,隐藏起来备用,当用户经过WebView访问H5页面时,使用这个全局的WebView来加载对应的网页便可。这种方案能够省去用户感知WebView的初始化这段时间。
缺点:内存消耗,WebView以前使用的痕迹需清除,使用不当容易形成内存泄露。web
2.&#