07-性能优化-网络

作者: 砌墙的民工 | 来源:发表于2019-02-18 17:13 被阅读0次

React-Native 内部集成了 OkHttp 作为网络底层实现,上层直接调用 fetch api 即可发起网络调用。 除非你对网络有特殊要求,否则现有的环境应该是足以满足需要的。

但是一般而言,国内大厂都有自己内部的整套网络工具,实现了流量统计、异常监控、网络性能调优等操作,不会直接使用未经任何改造的原始的 Okhttp。

所以在真实环境下,网络能力都需要和公司整体 IT 环境保持统一。那么这里主要需要做的就是把 react-native 的网络访问能力替换掉。

Step1

方案一

简单点的方案, 废弃掉 fetch api。重新实现一套自己的 fetch,native 层也通过 NativeModule 向 React-Native 暴露 api 和自己的 fetch 进行对接。

这个方案实现成本很低,也比较易于维护。但是对成员要求性相对较高,团队成员人少的时候比较适用,而且作用域仅限于团队内维护的模块,第三方模块涉及到的网络访问没有办法控制。

方案二

从底层替换掉 React-Native 内的网络模块。

查阅 React-Native 的源码很容易发现,自定义的 NativeModule 和原生的 NativeModule 都是一样的,所以我们可以把原生的 NetworkingModule 内的实现替换掉,让它不依赖 Okhttp 库,而是公司内部的网络库。

具体如何替换需要看各家内的网络库 api 如何设计,这里就不做多讲解,而且 NetworkingModule 的实现也很简单,稍微阅读一下就能理清其中的脉络。

这个方案对上层隔离,而且可以作用于全局,是比较理想的方案。但是会有个问题,因为涉及到 React-Native 源码的修改,所以需要自行 fork 一份源码单独维护,成本比较高。这种类似的点还有很多,也是各家在实践 React-Native 都需要锁定版本的原因之一。只能期望未来 facebook 把这块机制设计的更灵活一些了。

Step2

调用网络能力基础的 API 是 Fetch, 但是直接使用 fetch 也是一件很麻烦的事情。 这里基于 fetch 做了一个简单的 rpc-client 包装, 主要特点:

  1. 简化 get、post 调用。 其他方法暂未扩展
  2. 支持 rpc 状态检查,取消、超时操作
  3. 支持特定的几种 content-type 类型,并可方便扩展

相关文章

  • 07-性能优化-网络

    React-Native 内部集成了 OkHttp 作为网络底层实现,上层直接调用 fetch api 即可发起网...

  • 2017.11.10性能优化

    性能优化 1 稳定 2 扩展 3 性能 1 网络性能 2 执行性能 网络性能 网络性能优化 面向对象的...

  • Android性能优化(下)

    Android性能优化 内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优...

  • 性能优化与面向对象

    一、性能优化 1、网络性能 a、网络性能优化 2、执行性能 二、面向对象(OOP) 1、对象由什么组成? 2、创建...

  • 性能优化07-启动优化

    01冷启动简介 启动时间就是点击app图标到app将数据显示到屏幕上面的时间 APP的启动可以分为2种冷启动(Co...

  • 网络优化

    网络性能排查工具 网络性能优化 应用程序优化 优化I/O模型 套接字 net.core.optmem_max增大每...

  • 对于手游的优化

    给手游做优化,无非就CPU性能优化、内存性能优化、资源优化、GPU优化、IO优化、网络优化、耗电优化这些,为此汇总...

  • 想要深入学习Android性能优化?看完这篇直接让你一步到位

    Android性能优化 Android中的性能优化基本上可以分为以下几个方面: ● 布局优化 ● 网络优化 ● 内...

  • iOS性能调优

    1.iOS 性能调优2.iOS性能调优(全)---内存优化和UI优化3.深度优化iOS网络模块4.iOS网络请求优...

  • 【Unity项目实战】http网络插件和性能优化

    使用http网络请求:Untiy中常用通信(HTTP)插件BestHttp 性能优化:Unity性能的全面优化详解

网友评论

    本文标题:07-性能优化-网络

    本文链接:https://www.haomeiwen.com/subject/viczeqtx.html