HTTP 框架的优化手段 | 青训营

2023年 8月 29日 74.3k 0

本文主要讲述 HTTP 框架的优化手段,从性能优化方面入手,浅探 HTTP 中的优化问题。

一、 启用长连接

TCP 和 SSL 建立新连接的成本是非常高的,有可能会占到客户端总延迟的一半以上。长连接虽然不能优化连接握手,但可以把成本“均摊”到多次请求里,这样只有第一次请求会有延迟,之后的请求就不会有连接延迟,总体的延迟也就降低了。

二、 启用 “TCP Fast Open”

在现代操作系统上启用 TCP 的新特性“TCP Fast Open”(Win10、iOS9、Linux 4.1),它的效果类似 TLS 的“False Start”,可以在初次握手的时候就传输数据,也就是 0-RTT,所以我们应该尽可能在操作系统和 Nginx 里开启这个特性,减少外网和内网里的握手延迟。

三、 数据压缩编码

数据压缩编码不仅可以使用标准的gzip,还可以使用新压缩算法br,有更好的压缩效果。除此之外,对于HTTP协议传输的各种格式数据,我们可以有针对性地采用特殊的压缩方式。

  • HTML/CSS/JavaScript 属于纯文本,就可以采用特殊的压缩,去掉源码里多余的空格、换行、注释等元素。
  • 图片在 HTTP 传输里占有非常高的比例,虽然它本身已经被压缩过了,不能被 gzip、br 处理,但仍然有优化的空间。比如说,去除图片里的拍摄时间、地点、机型等元数据,适当降低分辨率,缩小尺寸。图片的格式也很关键,尽量选择高压缩率的格式,有损格式应该用 JPEG,无损格式应该用 Webp 格式。
  • 刚才说的几种数据压缩针对的都是 HTTP 报文里的 body,在 HTTP/1 里没有办法可以压缩 header,但我们也可以采取一些手段来减少 header 的大小,不必要的字段就尽量不发(例如 Server、X-Powered-By)。
  • 对于小文本或者小图片,可以使用资源合并的方式,把许多小资源合并成一个大资源,用一个请求全下载到客户端,然后客户端再切分后使用,好处是节省了请求次数,缺点是可能会缓存有影响,可能降低缓存的可用性。

四、 收缩域名

收缩域名。如果网站拥有多个域名,那么域名解析获取 IP 地址就是一个不小的成本,限制在两三个左右,减少解析完整域名所需的时间,让客户端尽快从系统缓存里获取解析结果。

五、 不使用重定向

尽量不使用重定向。重定向引发的客户端延迟也很高,它不仅增加了一次请求往返,还有可能导致新域名的 DNS 解析。

六、 利用缓存

利用好缓存,为每个资源都添加 ETagLast-modified 字段,再用 Cache-Control、Expires 设置好缓存控制属性。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论