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