Pingclair 与 nginx、Caddy 在同一台主机上测量：每个候选者都运行在限制为两颗 CPU 的容器中，使用相同的 worker 数量与相同的 1 KiB 内容。反向代理的后端在自己的容器中、位于同一个 Docker 网络上，而压测工具则原生运行。

## 📊 结果

每个数值是三轮交错、每轮 50,000 个请求的中位数；只有当所有请求都成功时，该行才会被计入。

| 场景 | Pingclair | nginx 1.31.6 | Caddy 2.11.4 |
| --- | ---: | ---: | ---: |
| HTTP/1.1 静态 | 46,125 | 39,478 | 18,266 |
| HTTPS/1.1 静态 | 40,721 | 31,508 | 19,978 |
| HTTP/2 静态 | 92,369 | 41,972 | 17,424 |
| HTTP/3 静态 | 56,180 | 55,638 | 22,912 |
| HTTP/1.1 反向代理 | 20,856 | 22,584 | 17,117 |
| HTTPS/1.1 反向代理 | 20,297 | 21,944 | 16,660 |
| HTTP/2 反向代理 | 23,181 | 20,396 | 未完成 |
| HTTP/3 反向代理 | 28,078 | 22,213 | 未完成 |

单位是每秒请求数。与 nginx 相比，Pingclair 在 HTTP/1.1、HTTPS/1.1 与 HTTP/2 的静态行领先（分别为 1.2 倍、1.3 倍与 2.2 倍），HTTP/3 静态则大致持平。在反向代理负载上，HTTP/2 领先 14%、HTTP/3 领先 26%，而 HTTP/1.1 与 HTTPS/1.1 仍落后 nginx 约 8%。

## 📐 限制这些数字的条件

- **主机是一台笔记本。** 测量在 Apple M2 搭配 OrbStack 上进行。绝对吞吐量不是容量声明，比值也只在受控负载下描述相对性能。
- **各行只在同一协议内比较。** HTTP/3 使用与其他行不同的压测工具，因此不应跨协议比较绝对吞吐量，只能在同一行内比较服务器之间的差异。
- **未完成的格子不是比较。** 在这台主机与这套压测工具上，Caddy 未完成反向代理的 HTTP/2 与 HTTP/3 两行：在测试的并发度下，上游连接的频繁建立耗尽了容器可用的临时端口。这些格子以“未完成”呈现，而不是改用不同负载测出的数字。
- **结果因主机而异。** 服务器之间的相对位置会随 CPU 架构、内核、worker 数量与 TLS 实现而改变。

## 🧾 来源

方法论、配置文件、压测工具与完整结果表都放在服务器仓库：

- [测量方法](https://github.com/dorianverlaine/pingclair/blob/main/benchmarks/README.md)
- [当前的结果段落](https://github.com/dorianverlaine/pingclair#-benchmarks)

原始运行证据由维护者保存在本机，刻意不对外公布。
