常州做网站哪家便宜,上海企业建站,深圳设计展,如何将图片生成链接兼容HTTP/ 1.1 第一点#xff0c;HTTP/2 出来的目的是为了改善 HTTP 的性能。协议升级有一个很重要的地方#xff0c;就是要兼容老版本的协议#xff0c;否则新协议推广起来就相当困难#xff0c; HTTP/2 做到了兼容 HTTP/1.1。
1.HTTP/2 没有在 URI 里引入新的协议名HTTP/2 出来的目的是为了改善 HTTP 的性能。协议升级有一个很重要的地方就是要兼容老版本的协议否则新协议推广起来就相当困难 HTTP/2 做到了兼容 HTTP/1.1。
1.HTTP/2 没有在 URI 里引入新的协议名仍然用「http://」表示明文协议用「https://」表示加密协议只需要浏览器和服务器在背后自动升级协议这样可以让用户意识不到协议的升级很好的实现了协议的平滑升级。
2.只在应用层做了改变还是基于 TCP 协议传输应用层方面为了保持功能上的兼容HTTP/2 把 HTTP 分解成了「语义」和「语法」两个部分「语义」层不做改动与 HTTP/1.1 完全一致比如请求方法、状态码、头字段等规则保留不变。而在「语法」层面基本改变了 HTTP 报文的传输格式。 头部压缩 第二点对于常见的 HTTP 头部通过静态表和 Huffman 编码的方式将体积压缩了近一半而且针对后续的请求头部还可以建立动态表将体积压缩近 90%大大提高了编码效率同时节约了带宽资源。
不过动态表并非可以无限增大 因为动态表是会占用内存的动态表越大内存也越大容易影响服务器总体的并发能力因此服务器需要限制 HTTP/2 连接时长或者请求次数。 Stream并发 第三点HTTP/2 实现了 Stream 并发多个 Stream 只需复用 1 个 TCP 连接节约了 TCP 和 TLS 握手时间以及减少了 TCP 慢启动阶段对流量的影响。不同的 Stream ID 可以并发即使乱序发送帧也没问题比如发送 A 请求帧 1 - B 请求帧 1 - A 请求帧 2 - B 请求帧2但是同一个 Stream 里的帧必须严格有序。
另外可以根据资源的渲染顺序来设置 Stream 的优先级从而提高用户体验。 服务器支持主动推送资源 第四点服务器支持主动推送资源大大提升了消息的传输性能服务器推送资源时会先发送 PUSH_PROMISE 帧告诉客户端接下来在哪个 Stream 发送资源然后用偶数号 Stream 发送资源给客户端。
HTTP/2 通过 Stream 的并发能力解决了 HTTP/1 队头阻塞的问题但是 HTTP/2 还是存在“队头阻塞”的问题只不过问题不是在 HTTP 这一层面而是在 TCP 这一层。 存在的问题 HTTP/2 是基于 TCP 协议来传输数据的TCP 是字节流协议TCP 层必须保证收到的字节数据是完整且连续的这样内核才会将缓冲区里的数据返回给 HTTP 应用那么当「前 1 个字节数据」没有到达时后收到的字节数据只能存放在内核缓冲区里只有等到这 1 个字节数据到达时HTTP/2 应用层才能从内核中拿到数据这就是 HTTP/2 队头阻塞问题。
所以引出了HTTP/3 。