Http2.0 与 Http1.1的区别
1,http2.0 使用io多路复用,解决了http1.1TCP连接数达到上限的问题,http2.0 凭借io多路复用允许在一个同域名下的TCP链接中进行交互。同时,单链接也减少了慢启动带来的低速。
2,http2.0 在应用层与传输层之间加了一个二进制分帧层。将一个http1.1的包转化成更小的二进制格式的帧。header frame & data frame。
3,首部压缩:HPACK算法。
4,服务端推送(server push):服务器可以向客户端推送所需要的资源,减少交互次数。example: client请求主页,server push js,css,html。
如果push时客户端已有一个copy
http2允许客户端发送 RESET_STREAM 来取消push,更好的做法是主动告诉server我不需要的数据。
Http1.1 与Http 1.0
1 长连接
HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,在HTTP1.1中默认开启长连接keep-alive。
2 节约带宽
HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息)。
3 HOST域
一个IP地址上可能有多个网站host,http1.1对此加以区分。
4缓存处理
在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
5错误通知的管理
在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。