我正在为 AJAX 编写向后兼容的文件上传进度。在 HTML5 中有 xhr.upload.progress 事件;这将是非 XHR2 浏览器的替代方案。我正在使用 APC 扩展来监控进度。
现在,我的问题是:哪个是触发定制 xhr.upload.progress 事件的最佳方法?我计划使用 HTML5 SSE,但如果它们不受支持,我不确定我应该使用什么。
- 轮询:每隔几秒就对进度进行连续的 AJAX 请求
- 长轮询:显然比轮询更好?不过,我听说它们会导致服务器冻结,因为请求并没有真正在服务器上异步处理。所以,我假设我必须实现类似 NodeJS 的东西来避免这种情况。如果冻结问题只是被夸大/过分夸大了,我可能会选择长期投票。
- 永无止境的 iframe:iframe 似乎是个好主意,但我确信它存在问题。它是否也像长轮询一样冻结服务器?
编辑:我想,这是我最关心的问题。这些 AJAX 方法的可扩展性如何?EventSource SSE 是否也会冻结服务器的内存?如果是这样,我应该考虑使用 NodeJS 或 ScaleStack 之类的东西吗?而且,服务器开销对上传栏真的很重要吗?