Firefox почти зависает при загрузке больших файлов; Индикатор выполнения Ajax невозможен; IE6 работает нормально - PullRequest
2 голосов
/ 07 мая 2010

Я хочу предоставить индикатор выполнения для моих пользователей, которые загружают очень большие файлы. Я немного почитал и реализовал то, что должно быть довольно простым решением:

  • У меня есть элемент <form>, который содержит элемент ввода файла; target имеет идентификатор скрытого iframe.
  • На стороне сервера есть некоторая магия Spring, которая присоединяет объект к сеансу пользователя; Ход загрузки может быть запрошен из этого объекта.
  • После отправки формы я запускаю повторяющийся Ajax-вызов, используя setInterval, который запрашивает у сервера завершенный процент с использованием вышеупомянутого объекта сеанса. Вызов повторяется каждые полсекунды, пропуская вызов Ajax, если предыдущий вызов еще не завершен. Я использую данные звонка для обновления width экранного элемента. Когда серверный вызов сообщает, что загрузка завершена, я очищаю интервальный таймер.

Я создал 100-мегабайтный файл и загрузил его, используя мой интерфейс. Это использует Firefox 3.6.3. Я обнаружил, что, хотя загрузка занимает 20-25 секунд, индикатор выполнения не обновляется до самого конца. Кроме того, весь браузер в основном заморожен до завершения загрузки.

Я предполагал, что мой метод должен быть ошибочным, но я пробовал ту же самую страницу, используя IE6, и был совершенно поражен, когда она вела себя так, как я ее разработал - индикатор выполнения обновлялся каждые полсекунды, и только вся загрузка заняло около 15 секунд, намного быстрее, чем Firefox.

У меня не установлено много надстроек, но я попытался отключить Firebug и перезапустить браузер. Это незначительно улучшило производительность - возможно, я получил еще одно обновление индикатора выполнения в середине загрузки - но все еще далеко от приемлемого.

Может кто-нибудь сказать мне, что я могу сделать, чтобы довести производительность Firefox до уровня IE6? Тьфу, я не могу поверить, что я действительно напечатал это.

EDIT:

Я только что попытался загрузить большой файл из браузера Firefox 3.6.3 на другой компьютер, чем тот, на котором работает мой веб-сервер, и он работал нормально. Да.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Я столкнулся с той же проблемой при использовании Firefox из Windows 7 и Mac на сервере, работающем на Mac, и обнаружил, что проблема заключается в Firebug. На вашей удаленной машине, я подозреваю, вы не запускали Firebug. Отключите или удалите firebug, и он должен работать нормально.

0 голосов
/ 10 мая 2010

Очевидно, это была вещь для Linux, а не для Firefox.

...