AList 大文件传输提速实战:流式机制与四个限速开关的完整指南
【免费下载链接】alist🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。项目地址: https://gitcode.com/GitHub_Trending/al/alist
AList 是一款支持多存储的文件列表与 WebDAV 程序,大文件传输速度慢、任务卡住是新手最常见的抱怨。本文带你从源码层面理解 AList 的流式传输机制,再讲清设置面板里四个限速开关和任务并发参数该怎么调,帮你把 AList 大文件传输加速方案落到实处。
先搞懂 AList 怎么搬数据:流式,而不是整文件读进内存
大文件传得慢,很多人第一反应是"AList 内存不够"。其实瓶颈更多取决于数据怎么被搬运。AList 内部统一用流(Stream)承载文件数据,数据按块经过服务器,而不是整个文件驻留在内存里。
分段读取:快进视频不用拉整个文件
internal/stream/stream.go里的 RangeRead 支持分段读取。对 10 MB 以内的小段请求,AList 会先在内存里缓存(常量InMemoryBufMaxSize固定为 10 MB);超过这个大段才落临时文件,用完自动清理。
这对日常使用意味着什么:
- 在线播放视频时拖动进度条,只拉取对应片段,而不是重下整个文件;
- 临时文件方案在源码注释里被明确标注"不推荐":它会磨损磁盘,而且上传要等整个文件写完才能开始。
为什么"不整存"反而是加速的前提
正因为能流式分段,AList 才能做到"边读边发",内存占用与文件大小无关。你要做的不是给它加内存,而是别把可流式的路径人为变成整文件中转。
四个限速开关:谁在卡你的速度
设置面板的「流量设置」分组里有四个独立开关,单位 MB/s,默认 -1(不限制):
| 开关 | 限制对象 | 什么时候用 |
|---|---|---|
| 客户端下载最大速度 | 访客从 AList 下载 | 保护 AList 出口带宽 |
| 服务器下载最大速度 | AList 从云盘拉取 | 防止打满云盘 API 配额 |
| 客户端上传最大速度 | 访客往 AList 上传 | 防止单用户占满上行 |
| 服务器上传最大速度 | AList 推往云盘 | 给云盘 API 留余量 |
实现见internal/bootstrap/stream_limit.go:改完面板即时生效,不用重启。
调参的正确姿势
- 先不限速跑一次完整下载,记下基线速度,再逐项打开限速对比;
- 限速是软限流,基于令牌桶按已传输字节数等待,突发流量不会硬切断;
- 只调一个值,观察一段,避免一次改多个导致无法归因。
驱动与任务侧的并发参数
除了流量,影响体感的还有驱动自身参数和后台任务并发。
本地存储:缩略图并发最容易被人忽略
本地驱动除了路径,还带缩略图参数:thumb_concurrency限制同时生成缩略图的任务数(0 为不限制),配thumb_cache_folder缓存已生成的图。目录里图片视频多时,这两项对列表加载速度的影响往往比网络更明显。
离线下载、上传、复制:任务线程数各管各的
「流量设置」里还有离线下载、上传、复制、解压等任务的线程数。注意:网盘类存储受对方 API 限制,并发开太高不会更快,反而容易触发风控,先保持默认,确认瓶颈在本地再调。
内网部署:内置 frp 隧道
服务器在内网时,「FRP 设置」分组提供了内置 frp 隧道,把 AList 暴露到公网,不用另搭反代。
改完怎么确认真的生效了
- 看吞吐:关闭全部限速,用一个大文件完整下载,记录平均速度做基线;
- 看负缓存:全局设置里的
meta_not_found_cache_expire(默认 60 秒)会给"不存在的路径"结果做短缓存,反复访问无效路径时,驱动侧的重复查询会明显减少; - 看日志:改完限速和并发后观察运行日志,异常时对照前文定位是客户端侧还是服务器侧被限了。
下一步
- 流式与限速实现:
internal/stream/stream.go、internal/bootstrap/stream_limit.go; - 各开关的默认值定义:
internal/bootstrap/data/setting.go; - 本地驱动的参数与缩略图逻辑:
drivers/local/driver.go。
【免费下载链接】alist🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。项目地址: https://gitcode.com/GitHub_Trending/al/alist
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考