Firefox在大文件上传时会冻结;Ajax进度条不可行;IE6工作正常

Firefox在大文件上传时会冻结;Ajax进度条不可行;IE6工作正常,firefox,internet-explorer-6,progress-bar,Firefox,Internet Explorer 6,Progress Bar,我想为上传非常大文件的用户提供一个进度条。我读了一些书,并实现了一个非常简单的解决方案: 我有一个元素,它包含一个文件输入元素;其目标设置为隐藏iframe的ID 在服务器端,有一些Spring魔术将一个对象附加到用户的会话;可以从此对象查询上载进度 提交表单后,我使用setInterval启动一个重复的Ajax调用,该调用使用前面提到的会话对象查询服务器的完成百分比。调用每半秒重复一次,如果上一次调用尚未完成,则跳过Ajax调用。我使用调用中的数据更新屏幕元素的宽度。当服务器调用报告上载完成

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

  • 我有一个
    元素,它包含一个文件输入元素;其
    目标
    设置为隐藏iframe的ID
  • 在服务器端,有一些Spring魔术将一个对象附加到用户的会话;可以从此对象查询上载进度
  • 提交表单后,我使用
    setInterval
    启动一个重复的Ajax调用,该调用使用前面提到的会话对象查询服务器的完成百分比。调用每半秒重复一次,如果上一次调用尚未完成,则跳过Ajax调用。我使用调用中的数据更新屏幕元素的
    宽度。当服务器调用报告上载完成时,我清除间隔计时器
我创建了一个100兆字节的文件,并使用我的界面上传了它。这是使用Firefox 3.6.3。我发现,虽然上传需要20-25秒,但进度条直到最后才会更新。此外,在上传完成之前,整个浏览器基本上处于冻结状态

我认为我的方法一定有缺陷,但我用IE6尝试了同一个页面,当它按照我设计的那样运行时,我感到非常惊讶——进度条每半秒更新一次,整个上传只花了大约15秒,比Firefox快得多

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

有谁能告诉我,我能做些什么使Firefox的性能达到IE6的水平吗?呃,我不敢相信我真的打了那个

编辑:


我刚刚试着从Firefox 3.6.3浏览器上传一个大文件到另一台运行我的web服务器的机器上,效果很好。嗯。

显然这是Linux的问题,而不是Firefox的问题。

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