HTTP1.x , 2.0 , 3.0 版本之间的对比

文章内容总结自:b站博主“周哥教IT与编程”、“技术蛋老师”的相关视频。

HTTP1.0

1、采用短链接,每一次发送请求都要建立TCP的三次握手 2、没有host头域,那么在一个IP地址下,如果有使用多个虚拟主机,它们共享一个IP地址,就会报错400 3、不支持断点续传

HTTP1.1

1、采用长连接,但是客户端发送一个请求之后,必须收到对应请求的处理之后,才会发送下一个请求 2、支持断点续传,引入了range头域。 3、有host头域,解决了一台物理服务器上存在多个虚拟主机,它们共享一个IP地址的问题。 4、引入了缓存策略

    HTTP缓存:所谓的HTTP缓存起始就是浏览器或者代理服务器会将最近的浏览数据等信息缓存下来,在没有过期之间,如果用户再次访问这些内容,就会直接从代理服务器或者浏览器中取得即可,不用去访问服务器。 如图: 相应头部与HTTP缓存有关的关键字: cache-control: (1)max-age=31536000 :这个关键字max-age表示能够保存为缓存的最长时间,单位为秒 (2)no cache : 表示要缓存,并且每一次使用缓存都需要与服务器进行确认,同时代理服务器不能对资源进行缓存 (3)no store : 表示让浏览器不要缓存 (4)private : 如果 cache-control显示的是private,表示资源只能给我这个浏览器缓存,其他什么代理服务器都不能进行缓存,说明这个页面是我特有的,其他人看不到。 (5)public : 如果显示的是Public,表示浏览器和代理服务器都是可以缓存的。 还有两个重要的表示缓存时间的首部,二者相互配合使用: (1)Expires : 表示缓存的过期时间 (2)Last-modified :表示资源最后被修改的时间,用户可以通过检查自己修改资源的时间与Last-modified的时间是否一致,如果一致表示资源没修改,如果不一致就得让服务器返回新的资源。

HTTP2.0

1、采用长连接的同时改变了1.1版本中长连接所存在的阻塞问题,支持了当一个请求发送没有被处理还能发送其他请求,先完成其他的请求,等待后序在接收之前未被服务器处理的内容,实现了多路复用。 2、采用了二进制分帧,在会话层和应用层之间将之前的文本格式的传送内容转变为二进制的形式发送。 3、头部压缩,从而使得传送的数据量减少

HTTP3.0

1、使用UDP协议减少握手次数 2、避免TCP层面的阻塞问题 3、优化了重传策略,重传包和原包的编号不同,降低后序重传计算的消耗 4、使用更适合的流量控制 5、连接迁移,不再用TCP四元组确定一个连接,而是用一个64位随机数确定这个连接

经验分享 程序员 微信小程序 职场和发展