这是我参与「第五届青训营 」伴学笔记创作活动的第四天。
本课堂重点内容:
- HTTP协议基本定义
- HTTP协议报文
- 静态资源
- HTTP协议实战
- 网络优化手段
HTTP协议基本定义
HTTP顾名思义,就是超文本传输协议,基于TCP协议,是应用层的协议。它是无状态的,用于请求和响应中。
HTTP协议的发展:
如上图可见:
- HTTP/0.9是只有GET请求,响应只有HTML文档;
- 在HTTP/1.0中增加了Header,并且有了状态码,支持了多种文档类型了。
- 在HTTP/1.1中,链接可以复用,请求有了缓存,内容协商等。
- HTTP/2中,协议为二进制协议,加快了计算机的理解速度,压缩了header,并且支持服务器推送。
HTTP协议报文
safe:不会修改服务器的资源 idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。
我们可以看到,上图展示了HTTP协议的所有不同的请求方法,其中GET,HEAD,OPTIONS的请求方法是SAFE的,它们不会修改服务器资源。而GET,HEAD,OPTIONS当然也都是幂等的,额外还有PUT以及DELETE,PUT将某个数据替换成请求发送的数据,替换多次和替换一次是等效的,而删除某个数据删除多次和删除一次也是等效的。POST请求可能涉及到对某个数据进行+1之类的操作,那么请求多次就和请求一次是不等效的,也就不会是幂等的。
如图所示,200为客户端请求成功,301为资源被永久转移了,304是触发缓存的返回状态,表示资源没有被修改。400位客户端的错误,500为服务器的错误。
静态资源
从本地缓存中拿到的资源,也会是200的状态码:
缓存策略:
- 强缓存
- cache-control:一年
- 允许所有域名访问
- 资源类型:css
AJAX
XHR:
Fetch:
我们常用的请求库有axios
优化相关
可以使用cdn来进行动态加速,使用http2来优化请求,以及dns的预解析、文件压缩代码压缩、https的性能优化等等。