Volley原理和Okhttp原理

来源:互联网 发布:如何将照片导入mac 编辑:程序博客网 时间:2024/06/06 04:00
1 Volley原理和Okhttp原理:
*Volley源码分析:
请求队列初始化    磁盘缓存目录 5M  》=9 HttpUrlConnection
HttpClient(比较庞大,不适合)线程池 4  hendler.post
分发器(绑定主线程)
 
 启动队列  缓存分发器  死循环 请求 
缓存请求队列 网络请求队列
缓存头 集合   key 再去查数据 
创建4个网络线程  启动
 
发动请求add 分发器死循环  拿到key  查找  缓存
没有网络请求 存入缓存 结果分发给主线程
后台开发设置缓存时间

2okhttp源码分析:
同步请求 异步请求 接口不一样  最终走到Call里卖面
异步默认最多64个请求 
拦截器机制:重写请求头、请求体  响应头和响应体
 
HTTP协议的瓶颈在于它需要靠很多链接来处理并发。
Okhttp内部实现是基于SPDY协议。
SPDY协议Google官方提出的应用层协议(基于TCP),通过压缩、多路复用和优先级来缩短加载时间。(speedy的缩写)
·        多路复用请求:共享同一个Socket来处理同一个服务器的所有请求。
·        请求优先级:客户端能请求某个资源被优先传输。这避免了高优先级请求被非关键资源堵塞网络通道的问题。
·        头部压缩:客户端现在发送了大量冗余的HTTP头部信息。因为一个页面可能有50100个子请求,这些数据是巨大的。通过头部压缩,省流量。
·        服务端推送流:服务端能向客户端推送数据不需要客户端发起一个请求。
 
更高效的使用HTTP 可以让我们的应用运行更快、更节省流量。而OkHttp就是为此而生。
对比http协议和SPDY协议:
1.   单路连接请求低效(先进先出,如果中间阻塞,就要等)------多路复用,请求优化(可设置优先级)
2.  HTTP只允许由客户端主动发起请求----服务端推送流
3.  HTTP头冗余--------头部压缩