Skip to content

Latest commit

 

History

History
101 lines (67 loc) · 4.57 KB

File metadata and controls

101 lines (67 loc) · 4.57 KB

上传性能参数说明

本文档说明当前站点前端实际生效的上传性能参数,基于 VXUI 上传模块实现整理。

适用范围

  • 当前生效实现:js/vxui/vxui-uploader.js
  • 旧版 js/core/uploader.js 仍保留历史可配置逻辑,但不是当前 VXUI 文件列表上传的主实现

当前上传参数

项目 当前值 说明
上传服务器选择 服务器列表接口返回后,默认选中本地已保存服务器;若无或失效则回退到第一个服务器 非赞助者前端不可手动切换服务器
分片大小 默认 80 MB,可由后端配置下发;赞助者可在“设定”页调整 当前通过 pf_upload_get 读取,变更通过 pf_upload_set 保存
同时上传文件数 默认 10 个,可由后端配置下发;赞助者可在“设定”页调整 当前通过 pf_upload_get 读取,变更通过 pf_upload_set 保存
单文件内部并发分片数 1 当前 VXUI 为单文件串行分片上传,不做多线程分片并发
单文件大小上限 50 GB 超过会直接拒绝加入上传队列

上传服务器如何选择

当前 VXUI 上传模块的服务器选择逻辑如下:

  1. 初始化上传模块时,请求 upload_request_select2 获取可用上传服务器列表。
  2. 如果本地 localStorage.app_upload_server 有值,并且仍在服务器列表中,则继续使用该服务器。
  3. 如果本地没有保存值,或保存值已经失效,则自动回退到服务器列表中的第一个服务器。
  4. 非赞助者虽然也会拿到服务器列表,但前端会禁用服务器选择框,因此通常只能使用默认选中的服务器。
  5. 实际上传分片时,请求地址为“选中服务器 URL + /app/upload_slice”。

补充说明:

  • 在真正开始上传前,前端还会再次调用 upload_request_select2 获取本次上传所需的 utoken
  • 服务器列表的用途主要是确定实际分片上传落到哪个上传节点。

上传性能设置如何读取

当前 VXUI 会在初始化或打开上传弹窗时,请求 pf_upload_get 读取上传性能配置:

  1. 读取 upload_slice_size 作为当前分片大小。
  2. 读取 upload_slice_queue_max 作为当前同时上传文件数。
  3. 非赞助者也会应用后端返回值,但前端会禁用相关输入框。
  4. 赞助者可在 VXUI 的“设定”页面中直接修改这两个参数,前端通过 pf_upload_set 保存到后端。
  5. 新设置会影响之后新加入队列的上传任务;已经开始上传的任务会继续使用自己的既有分片设置。

分片策略

当前分片策略是“任务级固定分片”:

  • 默认值是 80 * 1024 * 1024
  • 运行时可由 pf_upload_get 下发新的分片大小
  • 一个上传任务入队时会冻结自己的 slice_size
  • 总分片数按“文件大小 ÷ 当前任务分片大小,向上取整”计算
  • 每次只上传当前分片,完成后再继续请求下一个分片

这意味着当前实现依然是“稳定串行分片”,但已经恢复了分片大小可配置。

并发策略

当前 VXUI 上传并发分两层理解:

1. 文件级并发

  • 默认最多同时上传 10 个文件
  • 实际并发上限由 upload_slice_queue_max 决定
  • 当某个文件上传完成、失败或取消后,队列才会补位启动下一个文件

2. 单文件分片并发

  • 当前是 1
  • 一个文件在任意时刻只会有一个分片 XHR 在传输
  • 当前代码不会为同一个文件同时发多个分片请求

因此,当前实现实际含义是:

  • 最多按当前配置值并行上传多个文件
  • 每个文件内部 1 个分片串行上传

与旧版上传器的差异

旧版 js/core/uploader.js 中保留了以下可配置能力:

  • 分片大小可配置
  • 上传队列并发数可配置
  • 单文件分片线程数可配置

当前 VXUI 已恢复其中两项:

  • 分片大小可配置
  • 文件级并发可配置
  • 单文件分片并发仍固定为 1

当前尚未恢复旧版的“单文件分片线程数”能力,因此 VXUI 仍没有多线程并行上传同一文件的设计。

结论

当前前端上传性能参数可以概括为:

  • 服务器:优先使用本地已保存且仍有效的服务器,否则退回第一个可用服务器
  • 分片:默认 80 MB,可由后端下发,赞助者可在“设定”页调整
  • 同时上传:默认 10 个文件,可由后端下发,赞助者可在“设定”页调整
  • 单文件分片:串行上传,不做并行分片