http的性能优化
考查 http 性能,主要涉及三个部分:客户端、服务端,以及中间的传输链路
服务器
衡量服务器性能的指标有三个:吞吐量、并发数、响应时间
客户端
客户端最基本的指标就是延迟(latency)。延迟就是等待,等待数据到达客户端时所花费的时间。
产生延迟的因素有很多:
- 距离,信号的传输速度不能大于光速。因此距离越远,延迟越高。
- 带宽
- DNS查询,如果没有缓存,就必须向DNS系统发起查询
- TCP握手,需要经过SYN、SYN/ACK、ACK三个包的传输才能建立连接
之后就是数据的收发,浏览器解析HTML,执行js,渲染页面等过程。
所以客户端 HTTP 的性能优化关键就是:降低延迟
传输链路
传输链路可以分为三部分:
-
网站出口,即服务器接入互联网的传输线路,影响性能的因素是带宽,可以通过加大投入,提高带宽类提升性能
-
中间负责传输的互联网,使用 CDN 缩短距离
-
用户访问互联网的入口
HTTP 性能优化的具体措施
-
最简单的办法就是升级硬件和软件,不过这会增加成本。
-
从开发者的角度看可分为:开源、节流、缓存
- 开源
就是充分利用服务器的潜力:
-
nginx 的反向代理实现动静分离,负载均衡等
-
启用 HTTP 的长连接,减少每次都建立连接时握手消耗的时间
-
开启 TCP Fast Open
-
节流
就是降低传输数据的大小,有限的带宽下传输更多的数据
-
压缩数据包
-
在HTTP/1中减少不必要的头部字段
-
坚守cookie的传输
-
适当域名收缩,减少DNS查询
-
减少重定向
-
缓存
- 在服务器内部缓存计算结果和资源
- 传输链路中,使用 CDN
- 客户端,通过设置头部字段,实现资源缓存(采用合适的缓存策略,强缓存和协商缓存)
-
升级 HTTP/2,利用 HTTP/2 的头部压缩,多路复用,二进制帧,消除应用层的队头阻塞等特点,提升 HTTP 传输效率