1 Volley原理和Okhttp原理:
*Volley源码分析:
请求队列
初始化 磁盘缓存目录 5M 》=9 HttpUrlConnection
《HttpClient(比较庞大,不适合) 线程池 4 hendler.post
分发器(绑定主线程)
启动队列 缓存分发器 死循环 请求
缓存请求队列 网络请求队列
缓存头 集合 key有 再去查数据
创建4个网络线程 启动
发动请求:add 分发器死循环 拿到key 查找 缓存
没有 网络请求 存入缓存 结果分发给主线程
后台开发 设置缓存时间
2
、
okhttp
源码分析:
同步请求 异步请求 接口不一样 最终走到Call里卖面
异步默认最多64个请求
拦截器机制:重写请求头、请求体 响应头和响应体
HTTP
协议的瓶颈在于它需要靠很多链接来处理并发。
Okhttp
内部实现是基于
SPDY
协议。
SPDY协议
是
Google
官方提出的应用层协议(基于
TCP
),通过压缩、多路复用和优先级来缩短加载时间。(speedy的缩写)
·
多路复用请求:共享同一个Socket来处理同一个服务器的所有请求。
·
请求优先级:客户端能请求某个资源被优先传输。这避免了高优先级请求被非关键资源堵塞网络通道的问题。
·
头部压缩:客户端现在发送了大量冗余的
HTTP
头部信息。因为一个页面可能有
50
到
100
个子请求,这些数据是巨大的。通过头部压缩,省流量。
·
服务端推送流:服务端能向客户端推送数据不需要客户端发起一个请求。
更高效的使用HTTP 可以让我们的应用运行更快、更节省流量。而OkHttp就是为此而生。
对比http协议和SPDY协议:
1.
单路连接
请求低效(先进先出,如果中间阻塞,就要等)------
多路复用,请求优化(可设置优先级)
2.
HTTP
只允许由客户端主动发起请求----
服务端推送流
3.
HTTP
头冗余--------
头部压缩