我的Delphi 2010应用程序尚未发布,允许用户将其文件上传到我的服务器。目前我正在使用HTTPS POST发送文件,(简化的)算法基本上是:
- 将文件分成“片段”(每个256KB)
- 对于每个片段,将其POST到服务器
即对于1MB文件:
--> Get Slice #1 (256KB)
--> Upload Slice #1 using TidHTTP.Post()
--> Get Slice #2 (256KB)
--> Upload Slice #2 using TidHTTP.Post()
--> Get Slice #3 (256KB)
--> Upload Slice #3 using TidHTTP.Post()
--> Get Slice #4 (256KB)
--> Upload Slice #4 using TidHTTP.Post()
我正在使用Indy 10。我一遍又一遍地滥用我的分析器,除了改变上传例程本身之外,几乎没有什么可以优化的了。
我也在使用多线程,尽管我已经尽力优化了代码,但基准测试仍告诉我我可以做得更好(还有其他经过良好优化的软件,几乎比我的上传例程快两倍!)
我知道这不是我的服务器的问题……这里还有我需要探索的想法:
1.我尝试将切片分组为单个POST,自然会导致性能提升(20-35%),但恢复功能现在已经降低了。
2.我也考虑使用SFTP / SSH,但我不确定它是否快速。
3.使用Web套接字实现可恢复上传(如this component),但我对速度也不确定。
现在我的问题是:有没有什么方法可以加速上传?我愿意接受任何建议,包括命令行工具(如果许可证允许我将其与我的应用程序一起发布),前提是:
- 支持可恢复上传
- 快!
- 合理的内存使用
- 安全并允许登录/用户身份验证
此外,由于主要安全问题,FTP不是我想要实现的内容。
非常感谢!