HTTP性能优化一直是个十分重要的话題但要进行优化,首先得找出有哪些地方会导致HTTP延时
在HTTP请求传輸的过程中,会经历这样的场景和可能遇见如下的问题:
1 . 用户输入或打开一个地址client查找本地http缓存,如果有未过期的本地缓存则直接200(from cache),请求结束
现代浏览器有这样的机制,在访问server时由server返回的HTTP响应头控制。
2 . client查找本地DNS缓存查看是否已有DNS信息如果没有,则向DNS解析服务器请求server的IP地址
当本地DNS缓存中已有本次访问所需的信息那么这里几乎是无延迟的,但如果client需要向DNS解析服务器请求则会有一定的延时
在这裏,开始TCP的三次握手建立连接如果client和server的网络情况并不好(网络抖动、地域过远、连接拥挤等),则会花费很长的时间
4 . 一旦连接建立起來,则client通过新建立的TCP管道向server发送HTTP请求当数据到达时,server从TCP管道中读取请求的报文并对请求进行处理
在这里,依然有可能受到网络的影响使得请求报文的传输较慢,或者是当server的负载过高或者是server处理的是一个复杂的动态资源,或者是server底层依赖的上游服务响应较慢(例如server作为反向代理)都会使得这一阶段的延时增加。
在这里依然可能被网络情况所影响。
6 . 请求/响应 的内容过长也会使得传输的时间变长,毕竟傳输速度不变的情况下内容越多,所需时间越长
所以这样一个简单请求中,也包含了硬件速度、网络、服务器负载、请求/响应报文尺寸、client/server的距离等这么多的坑等着你踩。