Skip to main content

http的性能优化

考查 http 性能,主要涉及三个部分:客户端、服务端,以及中间的传输链路

服务器

衡量服务器性能的指标有三个:吞吐量、并发数、响应时间

客户端

客户端最基本的指标就是延迟(latency)。延迟就是等待,等待数据到达客户端时所花费的时间。

产生延迟的因素有很多:

  • 距离,信号的传输速度不能大于光速。因此距离越远,延迟越高。
  • 带宽
  • DNS查询,如果没有缓存,就必须向DNS系统发起查询
  • TCP握手,需要经过SYN、SYN/ACK、ACK三个包的传输才能建立连接

之后就是数据的收发,浏览器解析HTML,执行js,渲染页面等过程。

所以客户端 HTTP 的性能优化关键就是:降低延迟

传输链路

传输链路可以分为三部分:

  • 网站出口,即服务器接入互联网的传输线路,影响性能的因素是带宽,可以通过加大投入,提高带宽类提升性能

  • 中间负责传输的互联网,使用 CDN 缩短距离

  • 用户访问互联网的入口

HTTP 性能优化的具体措施

  1. 最简单的办法就是升级硬件和软件,不过这会增加成本。

  2. 从开发者的角度看可分为:开源、节流、缓存

  • 开源

就是充分利用服务器的潜力:

  • nginx 的反向代理实现动静分离,负载均衡等

  • 启用 HTTP 的长连接,减少每次都建立连接时握手消耗的时间

  • 开启 TCP Fast Open

  • 节流

就是降低传输数据的大小,有限的带宽下传输更多的数据

  • 压缩数据包

  • 在HTTP/1中减少不必要的头部字段

  • 坚守cookie的传输

  • 适当域名收缩,减少DNS查询

  • 减少重定向

  • 缓存

    • 在服务器内部缓存计算结果和资源
    • 传输链路中,使用 CDN
    • 客户端,通过设置头部字段,实现资源缓存(采用合适的缓存策略,强缓存和协商缓存)
  • 升级 HTTP/2,利用 HTTP/2 的头部压缩,多路复用,二进制帧,消除应用层的队头阻塞等特点,提升 HTTP 传输效率