Android

http1、http1.1和http2的区别

2019-06-25  本文已影响0人  meow_possion

1. HTTP的基本优化方向

影响一个HTTP网络请求的因素主要有2个:带宽和延迟

2. http1.0和http1.1的区别

主要区别体现在缓存处理:
1⃣️缓存处理。
在http1.0中主要使用header的if-modified-since/expires来做缓存的判断依据。
http1.1引入了更多的缓存策略控制策略。比如Entity tag,If-Unmodified-Since,If-match,If-None-Match等更多可供选择的缓存头来控制缓存。
2⃣️带宽优化及网络连接的使用。
HTTP1.0中存在一些浪费带宽的现象。例如客户端只需要某个对象中的一部分,服务器端却把整个对象送过来了,并且不能支持断点续传的功能。
HTTP1.1在请求头中引入了range头域,它允许只请求资源中的某一部分,即返回码是206(partial content)。方便开发者的自由选择、节省带宽。
3⃣️错误通知的管理。
在HTTP1.1中新增了24个错误状态响应码。如409(conflict)表示请求的资源与资源当前的状态发生冲突,401(gone)表示服务器上的资源被永久的删除。
4⃣️host头处理。
在HTTP1.0中认为每一个服务器都绑定一个ip地址,因此请求消息头中并没有传递主机名(hostname)。
但是随着虚拟主机技术的发展,在一台物理服务器上可以存在多台虚拟主机,并且他们共享一个ip地址。
HTTP1.1中请求和响应都支持host头域,且请求消息中如果没有host头域会报错(400bad request)
5⃣️长链接
HTTP1.1支持长链接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立多个连接的消耗和延迟。在HTTP1.1中默认打开onnection:keep-alive,在一定程度上弥补了http1.0每次请求都要重新连接的缺陷。

3. HTTPS和HTTP的区别

4. SPDY:HTTP1.x的优化

SPDY优化了HTTP1.x的请求延迟,解决了HTTP1.x的安全性

  1. 降低延迟
    针对HTTP高延迟的问题,SPDY采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking问题,降低了延迟同时提高了带宽的利用率。
  2. 请求优先级
    多路复用带来一个新的问题是,在连接共享的基础之上有可能导致关键请求被阻塞。SPDY允许给每个请求设置优先级,重要的请求就会优先得到响应。
  3. header压缩
    HTTP1.x的header很多都是重复多余的。选择合适的压缩算法可以减少包的大小和数量。
  4. 基于HTTPS的加密协议传输
    提高传输数据的可靠性
  5. 服务端推送(server push)
    采用了SPDY的网页,例如网页中有一个style.css的请求,爱客户端收到style.css数据的同时,服务端会将style.js的文件推给客户端。当客户端收到再次尝试style.js的时候就可以直接读取缓存,不用再发送请求。

SPDY的构成图


SPDY的构成图

SPDY位于HTTP之下,TCP和SSL之上,这样就可以轻松兼容老版本的HTTP协议,同时可以使用已有的SSL功能

5. HTTP2.0性能惊人

HTTP2的性能比HTTP1.1好很多,这里是Akamai公司的一个官方演示

demo展示的效果

6. HTTP2.0: SPDY的升级版

HTTP2.0可以说是SPDY的升级版(原本也是基于SPDY设计的),但是两者还是有一些区别:

  1. HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS(加密传输)
  2. HTTP2.0消息头的压缩算法才有HPACK, SPDY采用的是DEFLATE

7. HTTP2.0和HTTP1.X相比的新特性

8. HTTP2.0的升级改造

HTTP2.0的多路复用和HTTP1.X的长连接复用有什么区别

服务器推送是什么?

服务器推送能把客户端所需要的资源伴随index.html一起发送到客户端,省去了客户端重复请求的步骤。正因为没有发起请求,建立连接等操作,所以静态资源通过服务器推送的方式可以极大地提升速度。

为什么需要头部压缩

假定一个页面有100个资源需要加载,每一次请求都有1kb的消息头,则至少需要消耗100kb来获取这些请求头。HTTP2.0维护一个字典,差量更新HTTP头部,大大降低因头部传输产生的流量。

HTTP2.0多路复用

HTTP优化的性能并不在于高带宽,而是低延迟。TCP连接会随着时间进行自我调谐,起初会限制连接的最大速度,如果数据传输成功,会随着时间的推移提高传输的速度。这种调谐叫做TCP的慢启动。由于这种原因,让原本就具有突发性和短时性的HTTP连接变得十分低效。
HTTP/2让所有的数据流共用同一个连接,可以更有效地使用TCP连接,让高带宽也能真正的服务于HTTP的性能提升。

上一篇 下一篇

猜你喜欢

热点阅读