文章第一句话为“这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
今天学习HTTP协议
HTTP/1.0
最早的http只是使用在一些较为简单的网页上和网络请求上,所以比较简单,每次请求都打开一个新的TCP链接,收到响应之后立即断开连接。
HTTP/1.1
引入了更多的缓存控制策略,如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等
HTTP/2.0
引入帧(frame)和流(stream)。
帧代表数据传输的最小的单位,每个帧都有序列标识表明该帧属于哪个流,流也就是多个帧组成的数据流,每个流表示一个请求。
- 新的二进制格式
- 多路复用
- 头部压缩
- 服务端推送(客户端所需要的css/js/img资源伴随着index.html一起发送到客户端)
HTTP/3.0
Google 基于 UDP 协议推出了一个的 QUIC 协议,并且使用在了 HTTP/3 上。
- 避免包阻塞:基于UDP的QUIC协议中,不同的流之间的数据传输真正实现了相互独立互不干扰,某个流的数据包在出问题需要重传时,并不会对其他流的数据包传输产生影响。
- 快速重启会话:QUIC协议使用特有的UUID来标记每一次连接,在网络环境发生变化的时候,只要UUID不变,就能不需要握手,继续传输数据。
HTTP的一些常用的信息
负载
状态码
缓存策略
- 强缓存:Expires和Cache-Control两个字段来进行控制,用来表示资源的缓存时间。
- 协商缓存:在缓存过期的情况下,客户端和服务端协商,确认客户端缓存是否需要更新。Last-Modified 和 If-Modified-Since响应头字段 Last-Modified 表示提供的资源最后被修改的时间。
cookie
session
解决跨域:
cors(服务端配置)
代理服务器:本地起一个相同端口号的服务器,绕开浏览器同源限制