Skip to main content

Command Palette

Search for a command to run...

http版本

Published
1 min readView as Markdown

http1.1

  • keep-alive使得http请求可以复用TCP连接,从而降低建立连接的耗时(2次round trip)
  • 队头阻塞问题限制并发性能(通过减少请求或域名切片优化)
  • 无状态,多次请求可能需要重复发送cookie用来维护会话,导致请求体积增大影响性能

http2

  • 解决体积问题:
    • 使用binary传输数据(哈夫曼编码)
    • 使用HPack压缩格式,压缩请求和响应标头元数据
    • 连接中维护headers的静态表和动态表,缺省的标头字段使用静态表的值(因此,可以说http2是有状态的协议)
  • 解决队头阻塞
    • 分帧的多路复用(二进制是分帧的前提,分帧是多路复用的前提,http2的多路复用并非时分或频分复用,服务端组装请求时通根据每一帧的前9个字节进行组装,详细原理见这盘文章:https://segmentfault.com/a/1190000016975064)
  • push
    • 服务端可以主动推送静态资源给客户端,前置下载流程,客户端缓存静态资源,当解析到该资源时,直接读缓存而非单独发送请求

http3

  • TCP协议的队头阻塞
    • 使用基于UDP协议的QUIC协议和TLS1.3协议,RTT从6降低到1,解决TCP队头阻塞问题,进一步优化性能

More from this blog

js 数组方法

一、增删改方法 push()方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度 unshift()在数组开头添加任意多个值,然后返回新的数组长度 pop() 方法用于删除数组的最后一项,同时减少数组的 length 值,返回被删除的项 shift()方法用于删除数组的第一项,同时减少数组的 length 值,返回被删除的项 splice功能强大,可以同时对数组进行增删改的操作 二、搜索和位置方法 indexOf()返回要查找的元素在数组中第一次出现的下标,如果没找到则返回 -1 ...

Oct 16, 20231 min read

Server-Sent Events(SSE)

Server-Sent Events(SSE)是一种用于实现服务器向客户端实时推送数据的Web技术。与传统的轮询和长轮询相比,SSE提供了更高效和实时的数据推送机制。 SSE基于HTTP协议,允许服务器将数据以事件流(Event Stream)的形式发送给客户端。客户端通过建立持久的HTTP连接,并监听事件流,可以实时接收服务器推送的数据。 SSE的主要特点包括: 简单易用:SSE使用基于文本的数据格式,如纯文本、JSON等,使得数据的发送和解析都相对简单。 单向通信:SSE支持服务器向客户...

Sep 21, 20231 min read

Untitled Publication

28 posts