Лучший метод SSE для получения прогресса загрузки файла? - PullRequest
1 голос
/ 11 октября 2011

Я кодирую обратную совместимость процесса загрузки файла для AJAX. В HTML5 есть событие xhr.upload.progress; это было бы альтернативой для браузеров не-XHR2. Я использую расширение APC для отслеживания прогресса.

Теперь мой вопрос: каков наилучший метод для запуска пользовательского события xhr.upload.progress? Я планирую использовать HTML5 SSE, но если они не поддерживаются, я не уверен, к чему я должен прибегнуть.

  1. Опрос: непрерывные запросы AJAX о прогрессе каждые пару секунд
  2. Длинный опрос: очевидно, лучше, чем опрос? тем не менее, я слышал, что они приводят к зависанию сервера, потому что на самом деле запросы не обрабатываются асинхронно на сервере. Итак, я предполагаю, что мне придется реализовать что-то вроде NodeJS, чтобы избежать этого. Если бы проблема замораживания была только что завышена / чрезмерно драматизирована, я бы, вероятно, пошел с длинным опросом.
  3. Бесконечный iframe: iframe кажется хорошей идеей, но я уверен, что с этим есть проблемы. Замораживает ли он сервер, как при длинном опросе?

Edit: Я думаю, вот мои основные проблемы. Какова масштабируемость этих методов AJAX? Может ли EventSource SSE заморозить память сервера? Если да, то стоит ли мне использовать что-то вроде NodeJS или ScaleStack? И действительно ли накладные расходы сервера действительно имеют значение с панелью загрузки?

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Все эти решения требуют, чтобы вы также выполняли некоторую работу на стороне сервера, в то время как лучшее решение было бы только на стороне клиента.Сейчас для этой работы я использую Flashify-компонент Uploadify.

http://www.uploadify.com/

0 голосов
/ 01 сентября 2013

Для удобства вы можете использовать SSE polyfill в качестве запасного варианта: https://github.com/Yaffle/EventSource - вам не придется писать дополнительный код для браузеров не-SSE.

Совершенно другим подходом может быть отслеживание хода загрузки в JS на стороне клиента. Относительно новые API XHR2 и FormData делают это возможным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...