webview优化

回顾系统 WebView 进化史

从Android4.4系统开始,Chromium内核取代了Webkit内核

从Android5.0系统开始,WebView移植成了一个独立的apk,可以不依赖系统而独立存在和更新。

从Android7.0 系统开始,如果用户手机里安装了 Chrome , 系统优先选择 Chrome 为应用提供 WebView 渲染。

从Android8.0系统开始,默认开启WebView多进程模式,即WebView运行在独立的沙盒进程中。


WebView启动过程

webview优化_第1张图片

app首次打开默认不初始化浏览器内核,只有创建WebView实例才会初始化相关组件

初始化时间分为两部分:

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

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

在浏览器中,我们输入地址时(甚至在之前),浏览器就可以开始加载页面。

而在客户端中,客户端需要先花费时间初始化WebView完成后,才开始加载

怎么优化:

1.创建全局webview,但是额外的内存消耗并且容易造成内存泄漏。

2.在客户端初始化WebView的同时,直接由native开始网络请求数据;当页面初始化完成后,向native获取其代理请求的数据

70%以上业务由H5开发,手机QQ Hybrid 的架构如何优化演进?

在页面请求的数据返回之前,主要有以下过程耗费时间。

DNS

WebView的域名与App的API域名统一,则可以让WebView的DNS时间全部达到1.3ms的量级。

静态资源同理,最好与客户端的资源域名保持一致。

connection

服务器处理

在HTTP协议中,我们可以在header中设置 transfer-encoding:chunked

使得页面可以分块输出。如果合理设计页面,让head部分都是确定的静态资源版本相关内容,而body部分是业务数据相关内容,那么我们可以在用户请求的时候,首先将Web API可以确定的部分先输出给浏览器,然后等API完全获取后,再将API数据传输给浏览器。


webview优化_第2张图片

创建独立的进程process

进度条

开启软硬加速(闪烁或者黑白屏),耗费更多的内存

你可能感兴趣的:(webview优化)