webview优化

回顾系统 WebView 进化史

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

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

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

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


WebView启动过程

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数据传输给浏览器。


创建独立的进程process

进度条

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 引言:Html加载流程 加载流程各节点耗时分析优化 加载流程结构优化 客户端优化 Html加载流程 创建并初...
    BKQ_SYC阅读 15,560评论 0 25
  • 在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也...
    夜空下最亮的亮点阅读 1,101评论 0 2
  • 在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也...
    reyzhang阅读 1,921评论 1 20
  • 从Android4.4系统开始,Chromium内核取代了Webkit内核,正式地接管了WebView的渲染工作。...
    风淋天下阅读 1,541评论 0 1
  • 今天晚上完口才课,大姑带着我和哥哥一起去公园啊,听说张东伟在那里卖玩具可以用书换,也可以拿钱去买。大姑说都晚上八点...
    尚dh阅读 129评论 0 0