Retrofit+Okhttp完整网络请求链

一、全新网络请求链

  • 发起请求(callStart)
  • 检查代理开始(proxySelectStart)
  • 检查代理结束(proxySelectEnd)
  • DNS解析开始(DNS Start)
  • DSN解析结束(DNS End)
  • 网络连接开始(connectStart)
  • 网络安全连接开始(secureConnectStart)注:https
  • 网络安全连接结束(secureConnectEnd)注:https
  • 网络连接结束(connectEnd)
  • 获得网络连接(connectionAcquired)
  • 请求头开发(requestHeadersStart)
  • 请求头结束(requestHeadersEnd)
  • 响应请求头开始(responseHeadersStart)
  • 响应请求头结束(responseHeadersEnd)
  • 响应请求体开始(responseBodyStart)
  • 响应请求体结束(responseBodyEnd)
  • 连接释放(connectionReleased)
  • 请求结束(callEnd)


    image.png

二、复用网络请求链

  • 发起请求(callStart)
  • 获得网络连接(connectionAcquired)
  • 请求头开发(requestHeadersStart)
  • 请求头结束(requestHeadersEnd)
  • 响应请求头开始(responseHeadersStart)
  • 响应请求头结束(responseHeadersEnd)
  • 响应请求体开始(responseBodyStart)
  • 响应请求体结束(responseBodyEnd)
  • 连接释放(connectionReleased)
  • 请求结束(callEnd)


    image.png

三、思考?

客户端优化网络请求空间在如下几个链路上

  • 检查代理开始(proxySelectStart)
  • 检查代理结束(proxySelectEnd)
  • DNS解析开始(DNS Start)
  • DSN解析结束(DNS End)
  • 网络连接开始(connectStart)
  • 网络安全连接开始(secureConnectStart)
  • 网络安全连接结束(secureConnectEnd)
  • 网络连接结束(connectEnd)
    代理检查基本不耗时,优化空间不大(考虑防代理可设置:builder.proxy(Proxy.NO_PROXY)),主要考虑DNS解析、网络连接两个方向

四、如何优化

1.DNS解析优化

  • 直接用ip去访问,减少dns解析流程(考虑httpdns)
  • 增加dns过期时间(域名服务商)
  • 应用缓存域名解析对应ip,自定义dns解析

2.复用网络连接

  • 调整网络最大请求数
  • 调整连接池复用数和存活时长
  • 按业务需要考虑多域名
  • 根据需要动态调整网络连接、读写超时时长
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容