HTTP | 青训营笔记

63 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第四天。

本课堂重点内容:

  • HTTP协议基本定义
  • HTTP协议报文
  • 静态资源
  • HTTP协议实战
  • 网络优化手段

HTTP协议基本定义

HTTP顾名思义,就是超文本传输协议,基于TCP协议,是应用层的协议。它是无状态的,用于请求和响应中。

HTTP协议的发展: image.png

如上图可见:

  • HTTP/0.9是只有GET请求,响应只有HTML文档;
  • 在HTTP/1.0中增加了Header,并且有了状态码,支持了多种文档类型了。
  • 在HTTP/1.1中,链接可以复用,请求有了缓存,内容协商等。
  • HTTP/2中,协议为二进制协议,加快了计算机的理解速度,压缩了header,并且支持服务器推送。

HTTP协议报文

image.png

safe:不会修改服务器的资源 idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

我们可以看到,上图展示了HTTP协议的所有不同的请求方法,其中GET,HEAD,OPTIONS的请求方法是SAFE的,它们不会修改服务器资源。而GET,HEAD,OPTIONS当然也都是幂等的,额外还有PUT以及DELETE,PUT将某个数据替换成请求发送的数据,替换多次和替换一次是等效的,而删除某个数据删除多次和删除一次也是等效的。POST请求可能涉及到对某个数据进行+1之类的操作,那么请求多次就和请求一次是不等效的,也就不会是幂等的。

image.png

如图所示,200为客户端请求成功,301为资源被永久转移了,304是触发缓存的返回状态,表示资源没有被修改。400位客户端的错误,500为服务器的错误。

静态资源

从本地缓存中拿到的资源,也会是200的状态码: image.png

缓存策略:

  • 强缓存
  • cache-control:一年
  • 允许所有域名访问
  • 资源类型:css

image.png

AJAX

XHR: image.png

Fetch:

image.png

我们常用的请求库有axios

优化相关

image.png

可以使用cdn来进行动态加速,使用http2来优化请求,以及dns的预解析、文件压缩代码压缩、https的性能优化等等。