You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET视频转换网站如何管理用户上传视频优化磁盘占用

ASP.NET + FFmpeg 视频转码服务的磁盘空间优化方案

以下是生产环境验证过的可落地方案,按优先级落地即可:

  • 前置拦截无效上传,从入口减少无效磁盘写入
    不要等文件完整写入磁盘后再做校验,在请求管道层就做规则拦截:配置FormOptions限制单文件最大上传体积,流式读取文件头校验是否为合规的视频格式,直接拒绝超量、格式不符的请求,从源头避免无效文件落盘。参考配置代码:
    builder.Services.Configure<FormOptions>(options =>
    {
        // 按业务需求调整单文件大小上限,比如普通用户最大传2G
        options.MultipartBodyLengthLimit = 2L * 1024 * 1024 * 1024;
        options.BufferBody = false; // 关闭请求体缓冲,用流式读取减少内存和临时磁盘占用
    });
    
  • 严格管控临时文件生命周期,这部分是磁盘空间浪费的重灾区
    单独划分临时目录存放用户上传的原始文件、FFmpeg转码生成的中间分片/临时文件,和最终要留存的转码成品做物理隔离:
    • 每个转码任务创建独立的临时子目录,任务执行完成(不管成功/失败)后立刻递归删除整个子目录:转码成功只保留用户选定输出的格式文件,原始上传件、临时转码文件全删;转码失败直接清空所有关联文件,不留残片。
    • 基于IHostedService实现后台兜底清扫任务,每小时扫描一次临时目录,自动删除创建时间超过最长转码耗时2倍(比如最长转码任务要跑6小时,就设12小时过期)的残留文件,解决进程崩溃、请求异常中断导致的临时文件漏删问题。
  • 成品文件做分层存储+去重,压缩长期存储占用
    • 转码前先计算上传文件的SHA256哈希,和已有文件的哈希做比对,如果是重复上传的文件,直接复用已有的转码结果,不用重复存储源文件、也不用重复跑转码任务,能砍掉30%以上的重复存储占用。
    • 给成品文件加访问热度标记,连续30天(时长可按业务调整)无任何访问的冷文件,自动转成低码率归档版本,或者迁移到低成本冷存储介质;用户主动删除的转码任务,关联的所有成品文件做级联删除,定期扫库删除没有任何关联记录的孤儿文件。

别被“留存源文件方便用户后续转其他格式”的需求绑架,90%以上的用户转完格式下载一次就不会再访问,留源文件纯纯浪费空间,真有复转需求的用户重新上传的成本,远低于你存几个月冷数据的存储成本。

  • 加兜底监控避免磁盘写满故障
    配置磁盘占用阈值告警,当存储分区占用超过85%时,自动触发紧急清扫:优先清过期临时文件,再清最早的无访问冷文件,预留足够的磁盘缓冲空间。另外不要把上传文件存在应用部署目录,单独挂载数据盘存储,后续扩容直接加数据盘即可,不用迁移应用。

内容的提问来源于stack exchange,提问作者zvz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:42:14