获取文件上传进度的最佳SSE方法?

时间:2011-10-11 19:50:59

标签: ajax html5 file-upload progress server-sent-events

我正在为AJAX编写向后兼容的文件上传进度。在HTML5中有xhr.upload.progress事件;这将是非XHR2浏览器的替代方案。我正在使用APC扩展来监控进度。

现在,我的问题是:哪个是解雇自定义xhr.upload.progress事件的最佳方法?我打算使用HTML5 SSE,但如果不支持,我不确定我应该回归。

  1. 轮询:每隔几秒连续的AJAX请求进度
  2. 长期民意调查:显然比民意调查更好?但是,我听说它们导致服务器冻结,因为请求实际上并不是在服务器上异步处理。所以,我假设我必须实现像NodeJS这样的东西来避免这种情况。如果冻结问题被夸大/过度苛刻,我可能会选择长期投票。
  3. 无法结束的iframe:iframe似乎是一个好主意,但我确信它有问题。它是否像长轮询一样冻结服务器?
  4. 编辑: 我想,这是我最关心的问题。这些AJAX方法的可扩展性是什么? EventSource SSE是否也冻结了服务器的内存?如果是这样,我应该考虑使用像NodeJS或ScaleStack这样的东西吗?并且,服务器开销真的与上传栏有关吗?

2 个答案:

答案 0 :(得分:1)

所有这些解决方案都要求您进行一些服务器端工作,而最佳解决方案仅限于客户端。目前,我正在使用Flash组件Uploadify来完成这项工作。

http://www.uploadify.com/

答案 1 :(得分:0)

为方便起见,您可以使用SSE polyfill作为后备:https://github.com/Yaffle/EventSource - 您不必为非SSE浏览器编写额外代码。

完全不同的方法可能是跟踪JS,客户端的上传进度。相对较新的XHR2 and FormData API使这成为可能。