Почему группу файлов чаще загружают отдельными запросами?

Silentland

Новичок
Изучая опенсорсные загрузчики заметил, что множественную загрузку файлов они реализуют, обрабатывая на клиенте каждый файл по-отдельности и помещая его в files[0] (из File System API). Так же и на сервер загружают. Отдельным POST-запросом. А файл помещают в $_FILES[0] и повторяют пока очередь не кончится. Мне такой способ кажется не логичным, но настораживает, что у всех так, по крайней мере, по умолчанию.

Объясните в чем выгода?
 

Фанат

oncle terrible
Команда форума
Не надо искать во всём выгоду.
как умеют - так и делают.
Я, кстати, не встречал загрузчиков, которые файлы отдельными запросами шлют.
Впрочем, большой беды в этом тоже не вижу
 

WMix

герр M:)ller
Партнер клуба
Фанат
mail.google.com... - каждый файл сразу подгружается
Silentland
так наоборот логичнее с точки зрения пользователя...
какие решения рассматриваешь?
 

Silentland

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

Silentland

Новичок
Фанат
mail.google.com... - каждый файл сразу подгружается
Silentland
так наоборот логичнее с точки зрения пользователя...
какие решения рассматриваешь?
С точки зрения пользователя это одно и то же. Разница в том, что мы загружаем все в объект files, читаем его как массив и отображаем миниатюры, либо загружаем в files[0], рисуем миниатюру, потом загружаем следующий файл в files[0] и т. д. То же самое и с PHP, только там еще и кол-во запросов к серверу увеличивается
 

WMix

герр M:)ller
Партнер клуба
разница огромная, по одному файлу это асинхронно
 

Вурдалак

Продвинутый новичок
Silentland, разница в том, что пока пользователь думает что загружать еще или дописывает письмо, файл уже будет загружен, это экономит время. А в случае, если он потеряет соединение, письмо останется в черновиках с загруженными файлами.
 

Silentland

Новичок
Наверное, я непонятно описал ситуацию... Пользователь выбирает, допустим 5 файлов (либо перетаскивает их в нужное место) и они начинают загружаться. Разница в том, что в одном случае они идут на сервер в одном пост-запросе, в другом — будет пять последовательных запросов. Все запросы, конечно, асинхронные. Это все прозрачно для пользователя.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У сервера есть ограничение на размер POST запроса. Пусть оно будет 20 Мегабайт. Ты хочешь загрузить 5 файлов по 5 мегабайт, в итоге если послать их все сразу, сервер пошлет тебя. Не?
 
  • Like
Реакции: SiZE

Silentland

Новичок
Оу! Об этом я не подумал! Если так, то задача не настолько тривиальна. Возможно, стоит пожертвовать производительностью...
 

Вурдалак

Продвинутый новичок
Возможно, стоит пожертвовать производительностью...
Какой нахрен производительностью? У пользователя файл в 5 Mb загружается, допустим, 3 секунды, а сам скрипт инициализиуется на 0.001 + время на лишний HTTP-запрос примерно того же порядка. Ты экономишь доли секунды на что?
 

Silentland

Новичок
Процессор на сервере больше сил на обработку запросов расходует, сама же загрузка его не так напрягает, хотя разница, наверное, будет проявляться только в проектах масштаба Контакта.
 

Вурдалак

Продвинутый новичок
Ты считаешь нормальным выбирать между коробкой спичек и зажигалкой перед походом, основываясь на том что из них легче?
 

Silentland

Новичок
Ты считаешь нормальным выбирать между коробкой спичек и зажигалкой перед походом, основываясь на том что из них легче?
Стараюсь выбирать наиболее простое решение, главное чтобы серьезных подводных камней не появилось. О них и спрашиваю
 

AmdY

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