Firefox在大文件上传期间几乎冻结; Ajax进度条不可行; IE6工作正常

时间:2010-05-06 20:22:06

标签: firefox internet-explorer-6 progress-bar

我想为上传非常大的文件的用户提供进度条。我做了一些阅读并实现了一个非常简单的解决方案:

  • 我有一个包含文件输入元素的<form>元素;其target设置为隐藏iframe的ID。
  • 在服务器端,有一些Spring魔法将对象附加到用户的会话中;可以从此对象查询上传进度。
  • 提交表单后,我使用setInterval启动重复的Ajax调用,使用上述会话对象向服务器查询百分比完成情况。如果之前的呼叫尚未完成,则呼叫每半秒重复一次,跳过Ajax呼叫。我使用调用中的数据来更新屏幕元素的width。当服务器调用报告上载完成时,我清除间隔计时器。

我创建了一个100兆字节的文件并使用我的界面上传。这是使用Firefox 3.6.3。我发现虽然上传需要20-25秒,但进度条直到最后才会更新。此外,整个浏览器基本上都被冻结,直到上传完成。

我认为我的方法必须有缺陷,但是我尝试使用IE6进行相同的页面,并且当它按照我设计的方式表现时完全惊讶 - 进度条每半秒更新一次,而整个上传只有花了大约15秒,比Firefox快得多。

我没有安装很多附加组件,但我尝试禁用Firebug并重新启动浏览器。这略微提高了性能 - 我上传中途可能还有一个额外的进度条 - 但仍然远远不能接受。

有谁能告诉我我能做些什么才能将Firefox的性能提升到IE6的水平?呃,我简直不敢相信我输入了那个。

编辑:

我刚尝试从与运行我的网络服务器不同的机器上的Firefox 3.6.3浏览器上传大文件,它运行正常。咦。

2 个答案:

答案 0 :(得分:1)

我在使用Windows 7和Mac的Firefox到Mac上运行的服务器时遇到了同样的问题,发现Firebug成了问题。在您的远程计算机上,我怀疑您没有运行Firebug。禁用或卸载firebug,它应该可以正常工作。

答案 1 :(得分:0)

显然这是Linux的事情,而不是Firefox的事情。