FTP支持分页吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP支持分页吗?相关的知识,希望对你有一定的参考价值。
在一些测试中,我们的一个团队报告了试图通过FTP访问目录的超时。原因是他们的代码中存在一个错误,导致数百万个小文件被创建。
根据我的理解,超时的原因是请求要求列出目录的内容,并等待所有文件的单个响应。
如果相反,服务器立即开始返回结果(想想:yield return
vs return
),这将避免超时。同样,如果有一些选项可以返回分页数据,这可能会给我们一个解决方法。
由于FTP是request-response
,而不是request-response-response-...
我想象yield return
场景是不可能的;但某种形式的传呼可能是。也就是说,也许这不会给出解决方案,因为分页意味着某种形式的排序,这本身就会导致文件数量的开销缩放。
注意:这是好奇心的问题;我的真正问题已解决,因为我只是清除目录(https://stackoverflow.com/a/6208144/361842)来解决问题。但是,我的想法是,如果有一个选项可以将输入结果反馈回去,那么文件夹中的项目数将不再是一个潜在的问题(只要我们在返回结果之前没有对结果进行排序/过滤等等) )。我们正在使用FileZilla Server
和.Net客户端(System.Net.FtpWebRequest
);但由于这是理论上的,我对通用答案的兴趣超过了我们实施的具体答案。
FTP没有任何明确的分页支持。 FTP协议与您描述的问题无关。对于目录列表,将打开一个新的TCP连接,并假定该连接上从第一个字节到最后一个字节的所有内容都是目录列表。
所以 - 服务器可以自由地流回目录列表,无论何时它都可以,并且客户端可以随时随地显示它收到的数据。服务器可以随时发送一些目录列表,等待一下,发送更多条目等,客户端可以在它到达时自由显示目录列表,或者在整个目录列表中显示全部目录列表。收到回复。
但请注意,FTP服务器通常会被OS API绑定到列表文件。根据操作系统,API调用目录中的列表文件的文件系统等可能会阻塞并花费很长时间来处理具有许多小文件的目录,并且基本上将所有列表一次性返回到FTP服务器。
以上是关于FTP支持分页吗?的主要内容,如果未能解决你的问题,请参考以下文章