1

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

现在,我的问题是:哪个是触发定制 xhr.upload.progress 事件的最佳方法?我计划使用 HTML5 SSE,但如果它们不受支持,我不确定我应该使用什么。

  1. 轮询:每隔几秒就对进度进行连续的 AJAX 请求
  2. 长轮询:显然比轮询更好?不过,我听说它们会导致服务器冻结,因为请求并没有真正在服务器上异步处理。所以,我假设我必须实现类似 NodeJS 的东西来避免这种情况。如果冻结问题只是被夸大/过分夸大了,我可能会选择长期投票。
  3. 永无止境的 iframe:iframe 似乎是个好主意,但我确信它存在问题。它是否也像长轮询一样冻结服务器?

编辑:我想,这是我最关心的问题。这些 AJAX 方法的可扩展性如何?EventSource SSE 是否也会冻结服务器的内存?如果是这样,我应该考虑使用 NodeJS 或 ScaleStack 之类的东西吗?而且,服务器开销对上传栏真的很重要吗?

4

2 回答 2

1

所有这些解决方案也需要您做一些服务器端的工作,而最好的解决方案只是客户端。目前,我正在使用 Flash 组件 Uploadify 来完成这项工作。

http://www.uploadify.com/

于 2011-10-11T20:07:39.580 回答
0

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

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

于 2013-09-01T19:31:33.607 回答