我最近遇到了这个问题,
- 我使用自动索引提供了数据路径,其中有一个包含大量文件的目录(我在 btrfs 上有一个包含 1228240 个文件的目录)。访问单个文件没问题,但列出文件需要 2 分钟。
- 当您尝试通过 HTTP 请求直接访问该路径时,nginx 会冻结(是的,完全冻结,所有虚拟主机超时)直到列出完成,也就是 2 分钟的停机时间。
但是,我不能仅仅禁用自动索引,因为其他路径依赖于它的 json 输出。
有办法解决这个问题吗?还是需要向 nginx 报告。
答案1
答案2
您可能需要使用缓存代理来获得更好的结果,因为列表不会在每次访问时重新创建。
但请记住,在 Web 布局中显示超过 1 Mio 的文件条目通常没有用。(绘制文件夹视图是一种 Web 布局)。这最好是 ftp 服务器的工作,即使在那里,您也应该将文件组织在子文件夹中。完整列表是几 MB 的数据(可能至少 10MB 甚至更多)。
另一个解决方案是通过可以搜索内容的数据库提供索引。这样,就不必在每次请求时传输整个列表。该数据库还可以生成您需要的 JSON 输出。