什么是http请求?
是指客户端对服务端请求数据,包括请求方法,资源类型,使用的协议等。
为什么要减少http请求?
一个完整的http请求需要经过Dns查找,tcp握手,浏览器发送请求,服务器接受请求,服务器处理并返回请求客户端接受请求等。通过谷歌开发工具可以看到一个请求从创建到接受数据的时间:
image.png

Queueing:在请求队列的时间
Stalled:从tcp链接建立完成,到可以真正传输数据的时间差,包括代理时间。
Proxy negotiation:与代理服务器链接并协商所花费的时间
Initial Connection / Connecting:建立链接所花费的时间,包括tcp握手和代理协商
SSL:完成ssl握手所花费的时间
Request sent: 发出网络请求所耗费的时间,通常很短
Waiting(TFFB):TFFB是发出页面请求到接受到应答的第一个字节的时间。
Content Download:接受响应数据所花费的时间

从数据可以看出,真正下载文件的时间占比27.93/389.48 = 7.25%,文件越小,比例越小;文件越大,比例越高。这就是建议将小文件合并为大文件,减少请求次数的原因。

使用http2
http2比http1有以下优点:
解析速度快
http需要按照字节逐次解析,直到遇到换行符;http2是按照帧解析的,每个帧都有固定的长度。
多路复用
http1 每个请求都需要建立一个链接,因为一个tcp链接只能处理一个请求
http2 多个请求可以使用同一个链接,同一个请求和响应用一个流表示,多个请求和响应可以在http链接中乱序发送,客户端可以根据流ID重新组建。
首部压缩
http2会在客户端和服务端创建索引表来保存发送/接受的首部字段,若后续请求首部字段重复,可以省去传输,获取索引表内部的字段
服务器推送
服务器可以对一个客户端请求发送多个响应,如客户端请求html文件后,服务端会主动将引用的css,js文件推送到客户端
优先级和流量控制
客户端可以指定请求的优先级,服务端将优先处理;由于一个tcp链接的带宽是固定的,当有多个并发请求时,http2可以对不同流进行精确流量控制。


feng
9 声望0 粉丝