上传的解剖

Chr*_*ini 8 javascript ruby-on-rails

我想知道上传中等大小文件的一般共识是什么.我有一个Web应用程序,每次用户上传文件(通常大于5mb)时,Web服务器都会挂起,直到文件上传完成.

以上看似乎很正常,因为单个上传可以占用单个HTTP请求处理程序.网络开发人员是否考虑到这一点,并且:

a)支付更多HTTP处理程序

b)使用其他方法通过使用AJAX或其他方法来克服这个问题

我听说网络应用程序有一些HTTP请求处理程序来处理这个问题是很正常的,这将花费更多.另一方面,如果成本是一个问题,那么有些人建议尝试直接通过Flash + AJAX直接上传到Web服务器或存储服务(即Amazon S3).后一种方法需要一些脚本,并且有点混乱.

我的第二个问题:

通过使用ajax将文件上载到服务器上.这仍然占用整个HTTP请求处理程序吗?即服务器是否挂起,直到上传完成?

即使使用闪存,我仍然需要指定要上传的网址.该url将是我的控制器上的操作之一.这意味着处理仍然发生在服务器端.到目前为止这是对的吗?

我刚在想.另一方面,如果我使用其中一个上传脚本(plupload,uploadify,swfupload等)直接上传到Amazon S3,则处理将在S3服务器而不是本地Web服务器上处理.哪个不会挂起网络应用程序.我理解正确吗?

想听听您的反馈意见.

Chr*_*ini 0

感谢到目前为止的回复。

不幸的是,我们的主机 Heroku 不支持非阻塞、事件服务器。我还尝试过基于 flash + javascript 的上传器,例如 SWFUpload、Uploadify。上述插件的一些变体可以工作,有些则不能。花了无数个小时的试验和错误,但不喜欢代码如何集成到我的 Rails 应用程序中。

最后,直接按照此链接手动将文件上传到 S3 。它还允许从 S3 服务器返回响应来通知我们上传成功,为我们提供上传文件的路径,以便我们可以创建一个后台作业(通过 redis + resque)来处理该文件。