有关通过AJAX保持连接活动与FTP文件列表的建议?

时间:2010-12-17 14:15:02

标签: ajax ftp connection connection-pooling keep-alive

我有一个多用户Ruby on Rails Web应用程序,可以通过AJAX与FTP服务器进行交互。该应用程序允许用户浏览FTP站点。 Javascript进行AJAX调用,该调用与服务器脚本通信,该脚本返回给定目录中的文件和目录列表。

这很好用。但是,每次请求目录列表时,服务器都必须重新建立与FTP服务器的连接,这需要花费大量时间。我正在寻找一种方法让FTP连接保持打开状态,直到超过一定的超时秒数。

我可能会使用线程(虽然我完全接受其他想法)或一些花哨的连接池方案(可能通过管理它的守护进程)。

有什么方法可以坚持并重新获得我的ruby源中的连接参考?

有人建议使用“Connection:Keep-Alive”标题,但我不知道在这种情况下这会有什么帮助。

1 个答案:

答案 0 :(得分:1)

不是一个完整的答案,但如果您确实有某种守护程序或管理连接的东西,您可以使用TCP keepalive来使控制连接保持较长时间。

FTP使用两个连接。建立客户端到服务器的控制连接,并为每个请求建立服务器到客户端的数据连接。因此,每个目录列表或GET都会提示在请求期间打开另一个数据连接。

您不必担心保持大量侦听套接字打开,因为数据连接是在建立之前通过控制连接协商的。 (如果需要,也可以使用被动模式从客户端到服务器而不是服务器到客户端建立数据连接,但它仍然是一个单独的连接。)

无论哪种方式,我认为缓慢的来源更多地与关闭和重新打开每个请求的控制连接(和验证)有关。我想如果你有一些使用TCP keepalive(SO_KEEPALIVE套接字选项)保持控制连接打开的进程,你会看到一个很大的改进。

相关问题