HTTP知识体系总结

HTTP与HTTPS

HTTP是明文传输的,所以在传输请求的过程中,凡是http经过的站点都可以获取你的HTTP请求,甚至更该你的HTTP请求。所以我们需要给HTTP进行加密处理。

HTTP + TLS => HTTPS

这是目前的HTTPS的方案由来。其中TLS是一种加密协议。

HTTP缓存

HTTP缓存是通过HTTP中的headers中的cache-contrl属性决定的,它有这么几个值:

  1. public:客户端可以缓存
  2. private:客户端和代理服务器都可缓存
  3. max-age:缓存的内容将在 xxx 秒后失效
  4. no-cache:需要使用对比缓存来验证缓存数据
  5. no-store:所有内容都不会缓存,强制缓存,对比缓存都不会触发

强制缓存:就是不经过服务器,直接在本地查看,本地数据有没有过期,如果没有过期就直接使用本地已经缓存了的数据。

对比缓存:就是需要进行服务端的访问,如果对比服务端的数据和本地数据没有变化,直接使用本地的数据。如果发生了变化,就把服务端的数据拿到本地。

HTTP2.0相对于HTTP1.0的改进有哪些?

1、多路复用

浏览器针对同一域名下的请求,有一定的数量限制,如果超出这个限制,就会引发请求的阻塞。(这也是一些站点会有多个静态资源CDN的原因)。

HTTP2.0的多路复用机制,就是通过建立单一的链接,发起多重的请求-相应消息。

原理解析:HTTP协议,是通过TCP协议实现的。而TCP协议有个三次握手、四次挥手的机制。在之前的1.0版本的HTTP协议,每次请求都会发生这个TCP的链接过程,所以我们会有雪碧图技术、js和css的合并技术,目的就是为了减少HTTP请求。但是在新的2.0版本的HTTP协议,它可以建立一个长连接,在这个长连接的过程中,可以发起多次请求。也就是说,我们之前的针对图片的雪碧图技术、文件合并技术,对于2.0版本的HTTP是没多大作用的。

2、二进制分帧

二进制分帧是HTTP2.0版本的决胜的关键点,它是HTTP2.0性能优化的核心。二进制分帧层位于应用层(HTTP2.0)和传输层(TCP)之间,之前的1.0版本的HTTP是没有这一层的。

在HTTP2.0中,会把传输的信息分割为更小的消息和帧,所做的事情就是把HTTP1.0版本的首部信息封装到 HEADER frame,而把Request body部分的信息封装到 DATA frame 中。其中HTTP的通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。

优势:

  • 单连接多资源的方式,减少了服务端的链接压力,减少了内存,直接吞吐量变大。
  • 由于TCP连接的减少,从而网络拥塞情况可以得以缓解。

3、HTTP首部压缩

针对每次携带头部的HTTP请求,HTTP2.0提供了一种HPACK的算法,压缩HTTP头部,传输速度更快。

4、服务端推送

服务端推送的意思是在客户端发送请求之前进行数据推送的一种机制。在HTTP2.0中,一个请求可以返回多个响应。如果你请求一个界面,那么服务器可以连同你的logo、样式表、js文件等一起推送过来,这使得之前的内嵌资源的方式的优化手段,变得没有意义。

5、数据流

数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。1.1版取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2 可以取消某一次请求,同时保证TCP连接还打开着,可以被其他请求使用。

猜你喜欢

转载自blog.csdn.net/mapbar_front/article/details/80740725