
Вот вам задачка в коллективный разум, а то самому ленно искать.
Имеем: Пользователь загружает файлы на сервер через веб-интерфейс, проще говоря, через браузер.
Размер файла ограничен 10 gb (хотя, это не суть важно)
Можно грузить параллельно несколько файлов
Загрузка должна быть через AJAX (ну или первый запрос кинуть через AJAX, если уместны другие технологии)
Текущая реализация:
режем файл на чанки, кодируем в base64, (FileReader() readAsDataURL(data) ), считаем md5 сумму чанки, шлем на сервер, сервер открывает файлу сессию (на случай мультизагрузки, чтобы понимать, чей чанк прилетел), сравнивает чанку с полученной с md5 суммой, и клеит файл у себя.
Все хорошо, но скорость....
Загружаю 2 gb файл, скорость 700-800 kb/sec
Кинул тот же файл по ftp - 1,5 mb/sec
Оно понятно, передаем в текстовом представлении (base64), объем трафика на файл почти 1,3 от самого файла, подсчет контрольных сумм, склейка... всё это стоит времени. Но, блин, аж в два раза скорость проседает. Обидненко как-то

Есть идеи?
_____________
[продано копирайтерам]