AFI 是 Go 编写的轻量级文件服务器, 是基于 Gossa 的现代化增强维护分支
特色:
- 后端代码量低, 易于审查; 我们在 Gossa 的基础上进行了大量重构, 大幅增强了前后端的可维护性并提升了效率
- 清晰现代且轻量的网页界面, 相较于 FileBrowser, AFI 易于嵌入至
<iframe> 且不依赖任何 web 框架, 操作无动画不拖泥带水, 无外部资源引用 (显然它不会引用 is-odd, 也不会因 left-pad 而崩溃 :D)
- 单个可执行文件, 无需数据库, 速度极快, 方便快速部署
- 与 FUSE 文件系统兼容 (如 rclone 实例配置的网络挂载)
- 支持拖拽上传文件和目录, 并以归档(.zip)形式方便地下载任意目录
- 支持 MD5, SHA-1, SHA-256, SHA-512 文件校验和的远程解算
- 支持通过
DESCRIPT.ION 文件存储的备注元信息
- 完备的键盘操作支持
- 安全设计: 可防止路径穿越攻击, 支持只读模式
- 支持跳过隐藏项目 (以
. 开头的文件/目录)
- 开发/生产模式分离, 便于免编译重载前端资源
- 同时提供 RPC 调用接口便于编程与 webdav 接口便于挂载, 网页用户界面的 JavaScript 使用前者
- 低占用高性能, 网页用户界面每秒可承受万级以上响应并持续保持毫秒级低延迟, 接口性能更高
- 默认启用 gzip 压缩, 并为 iframe 嵌入优化
- 性能高效, 提供真正的毫秒级响应, 用户使用体验不让位于技术审美与性能
实际性能数据#
作者此前一直在改进用户界面和增加实现调用接口
直到测试时, 并未对核心模板与重复过程调用做优化, 但它的性能目前已经处于准优秀水平
目前已经发现了众多可改进之处, 性能有大幅增长空间, 敬请期待
关于测试数据:
- AFI 本身"自缚一手": 坦率地说, 尽管在同一文件夹进行索引, 但仅 AFI 具有完备的文件管理器功能, 为显示元数据, 调用比其他服务器多, 页面体积和结构都比其他软件复杂, 并且只有 AFI 启用了 gzip, 因此相较而言 AFI 在对比中比较吃亏且测试数据是不严谨的, 不能证明 “AFI 的性能是 Nginx 的 25%”, 笔者提供这个数据仅仅是为了做除了 QPS 以外与其他服务器软件响应的性能参考(毕竟 QPS 和 CPU 性能挂钩, 树莓派上绝对跑不到下方的 QPS)
- 测试的地址是 web 界面, 不是数据接口, 理论上数据接口是单一调用, 更快但不能进行对比实验
- 您可用下方提供的命令在您的平台上获取测试数据 (请不要用它压力测试他人的网站!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
Test Platform: AMD Ryzen 3600X, tmpfs, 12 item with DESCRIPT.ION in directory
OS: glibc linux-zen 6.19.10
Date: 2026-04-02
Version: latest
Command: wrk -t8 -c50 -d15s http://addr/
Test Address: /
QPS Performace from test:
Server QPS Data QPS Bar (higher is better) Gzip Page
Nginx 60,242 QPS ████████████████████████████████ Disabled Default Index
Apache 34,207 QPS █████████████████░░░░░░░░░░░░░░░ Disabled Default Index
AFI 15,262 QPS ████████░░░░░░░░░░░░░░░░░░░░░░░░ Enabled Full-functional web file manager (without CSS & JS embeded in bench) (net/http)
PyPy 4,169 QPS ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ Disabled Default Index (http.server)
CPython 2,128 QPS █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ Disabled Default Index (http.server)
Latency from the same test:
Server Average Latency Bar (lower is better) Maximum
Nginx 0.91ms █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 14.49ms
Apache 1.43ms ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 41.05ms
AFI 4.69ms █████░░░░░░░░░░░░░░░░░░░░░░░░░░░ 67.67ms
CPython 18.78ms ████████████████████░░░░░░░░░░░░ 1.67s
PyPy 23.86ms ██████████████████████████░░░░░░ 1.67s
Socket Errors from the same test:
Server Number (lower is better)
Nginx 0
Apache 0
AFI 0
CPython 1
PyPy 11
|
开放源代码协议: MIT