iOS WebKit中的多进程

      

        在iOS系统中,通常一个应用对应一个进程,但是在Webkit发展过程中,基于稳定性和安全性考虑,引入多进程概念,避免单一界面的异常影响整体app运行。

  • UIProcess 进程为 app 所在进程,WKWebView 在该进程中提供了大量 API 供开发者与内核交互,比如处理各种delegate回调, 返回上一页等等
  • WebContent 进程对应的是每一个新开的网页,该进程视内存情况可进行复用,某一个WebContent 进程的异常并不会影响到主 app 进程,常见的异常现象为白屏。
  • NetWorking 进程,无论多 WKWebView 还是单 WKWebView 场景,都只有唯一的 NetWorking 进程,这种设计主要便于网络请求管理以及保证网络缓存、cookie 等管理的一致性。
  • Storage Process:用于实现页面Local Storage进程。
        Webkit基于多进程进行实现,也会带来一些副作用,主要体现在web页面启动时延较大和渲染效率会有所下降:

     (1)启动webview需要启动多个进程,本身就是非常耗资源操作,耗时较大。

     (2)WebView的渲染进程和GPU进程是独立的,每一帧的更新都要通过IPC调用GPU进程,会造成频繁的IPC进程通信,从而造成性能消耗

     (3)由于跨进程, webview无法像native渲染那样,通过share OpenGL context 渲染线程和GPU线程间共享纹理资源,GPU无法直接使用context光栅化,因此GPU自身的性能发挥也会受影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值