发布媒体上传标注整体缓冲的性能隐患

- game_distribution_media.rs 在 Field::bytes() 处补 TODO(perf),说明峰值约 2× part 与 field.chunk() 流式限长改法
This commit is contained in:
2026-10-07 14:26:51 +08:00
parent 7d8b966d1f
commit 0119a329aa
@@ -175,6 +175,10 @@ async fn read_image_field(
kind: MediaKind,
) -> Result<UploadedImage, AppError> {
let label = kind.label();
// TODO(perf): `Field::bytes()` 会把整个 part 收成一个 `Bytes`,下面 `to_vec()` 再复制一份,
// 峰值内存约 2× part;单个超大 part 会被完整缓冲后才在下面判 413。彻底做法是改
// `field.chunk()` 循环累加,边收边按 `MAX_SINGLE_MEDIA_BYTES` 拒绝,并让 `UploadedImage.bytes`
// 直接持有 `Vec<u8>`。当前保留现状,先在此标注。
let bytes = field
.bytes()
.await