perf(caddy): encode 提到 handle 之前,API 响应终于会被压缩
抓包发现订单列表响应 75.9KB 明文下发(客户端已发 Accept-Encoding: gzip, br, 响应既无 content-encoding 也无压缩)。原因在 Caddyfile:`encode zstd gzip` 写在 `handle /api/*` 之后,而 Caddy 的 route 按书写顺序执行、handle 匹配后即终止链路, 于是所有 API 响应都绕过了编码器;静态文件一直是压缩的,只是因为它们落在 encode 之后的 file_server。 把 encode 提到 route 内最前面即可(SSE 的 text/event-stream 不在 encode 默认 压缩类型里,事件流不受影响)。后台与打手端 API 同时受益。 验证:部署后 curl 订单列表应出现 content-encoding: gzip 且体积大幅下降; 静态资源仍然压缩;/api/v1/admin/realtime 仍正常流式返回。
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
(order-site) {
|
||||
route {
|
||||
# 必须放在 handle 之前:Caddy 的 route 按书写顺序执行,而 handle 匹配后即终止链路,
|
||||
# 放在后面会让**所有 API 响应都跳过压缩**(生产实测订单列表 75.9KB 明文下发,
|
||||
# 客户端已发 Accept-Encoding: gzip, br)。静态文件之所以一直是压缩的,
|
||||
# 是因为静态文件落在 encode 之后的 file_server。SSE 响应不会被压缩(见 encode 默认规则)。
|
||||
encode zstd gzip
|
||||
|
||||
handle /api/* {
|
||||
reverse_proxy backend:3000
|
||||
}
|
||||
@@ -12,7 +18,6 @@
|
||||
reverse_proxy backend:3000
|
||||
}
|
||||
|
||||
encode zstd gzip
|
||||
root * /srv
|
||||
try_files {path} /index.html
|
||||
file_server
|
||||
|
||||
Reference in New Issue
Block a user