我必须从 FTP 中提取一组图像。
我通过只提供图像的服务器 url 尝试了与 tomcat 服务器相同的事情,它看起来又快又好。为了研究从 FTP 服务器拉取 FTP 文件,从苹果SimpleFTPSample 获取了一个样本
在示例中,有一个从 FTP 拉取图像的代码,但是拉取图像太慢了。
为什么要花这么多时间拍一张照片?如果我必须得到一些图像,我无法想象时间延迟?
谢谢,伊斯瓦尔
正如丹尼尔在这里所说:
是什么让 FTP 更快:
发送的文件中没有添加元数据,只有原始二进制文件
从不分块编码“开销”
是什么让 HTTP 更快:
重用现有的持久连接可以提高 TCP 性能
流水线可以更快地从同一服务器请求多个文件
(自动)压缩使发送的数据更少
没有命令/响应流可最大限度地减少额外的往返行程
最终最终结果当然会根据具体细节而有所不同,但我会说对于单次静态文件,您将无法衡量差异。对于单次拍摄的小文件,您可能会使用 FTP 更快地获得它(除非服务器的往返距离很长)。当获取多个文件时,HTTP 应该是更快的一个。
使用以下委托方法来跟踪上传进度:
- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
totalBytesWritten / totalBytesExpectedToWrite gives me the upload percentage.
是什么让 FTP 变慢:
您必须每次为每个文件建立连接。
在这我不确定:握手是在端口 X(也许是 22)上完成,数据传输是在端口 Y(也许是 21)上完成
是什么让 HTTP 变慢:https 标头。
对于一个大文件 IO 将使用 FTP,对于一堆小文件 HTTP,对于一个或几个小文件:我可以在 10 秒内复制粘贴的代码 :)
FTP需要一个FTP服务器,并且设置权限和HTTP服务器通常已经存在,如果你关心服务器端的要求。
防火墙:通常授予 http,拒绝 ftp
FTP 比 HTTP 复杂得多: 1 必须执行几个命令来请求文件 2 应该创建另一个 TCP 连接来传输文件数据
因此,如果您的应用程序对延迟敏感,那么 HTTP 是最佳选择。