HTTP协议

HTTP协议的特点

  • 无连接:连接一次就会断掉,不会保持连接
  • 无状态:浏览器无法区分前后两次连接是否同一个人。实际场景中我们可以通过设置session来实现区分。
  • 简单快速、灵活

HTTP报文组成部分

1

请求行包含:http协议、方法、地址、端口

HTTP方法

1

HTTP状态码

1

HTTP持久连接(keep-alive)

概念

一个普通的http请求是实用一个tcp连接来进行 请求/应答 模式,即一个请求发出后得到应答然后就会断开。 http持久连接则是使用同一个tcp连接来发送和接收多个http请求/应答。浏览器一般保持连接的时间在10s左右。

操作

  • 在http1.0中,需要手动设置请求头 Connection: Keep-Alive
  • 在http1.1中,所有的连接默认都是keep alive。

优势

  • 一定提升请求性能
  • tcp连接减少了
  • 无需再握手,减少了后续请求的延迟

HTTP管线化

正常的http持久连接的情况下,请求传递类似这样
请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3

使用管线化后,长这样
请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3

HTTP 103 状态码

HTTP 103 状态码 (Early Hints) 是一个信息性 HTTP 状态代码,可以用于在最终响应之前发送一个初步的 HTTP 响应。

利用 HTTP 103 状态码,就可以让服务器在服务器处理主资源的同时向浏览器发送一些关键子资源(JavaScript、CSS 或字体文件)或页面可能使用的其他来源的提示。

浏览器可以使用这些提示来预热连接,并在等待主资源响应的同时请求子资源。换句话说,Early Hints 可以通过提前做一些工作来帮助浏览器利用这种 服务器思考时间,从而提升页面的渲染性能。