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

Silentland

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

Объясните в чем выгода?
 
Не надо искать во всём выгоду.
как умеют - так и делают.
Я, кстати, не встречал загрузчиков, которые файлы отдельными запросами шлют.
Впрочем, большой беды в этом тоже не вижу
 
Фанат
mail.google.com... - каждый файл сразу подгружается
Silentland
так наоборот логичнее с точки зрения пользователя...
какие решения рассматриваешь?
 
Этим грешат загрузчики с большой долей JS, по моим наблюдениям. Ну если особой разницы нет, буду пихать все в массив, по идее, быстрее должно работать
 
Фанат
mail.google.com... - каждый файл сразу подгружается
Silentland
так наоборот логичнее с точки зрения пользователя...
какие решения рассматриваешь?
С точки зрения пользователя это одно и то же. Разница в том, что мы загружаем все в объект files, читаем его как массив и отображаем миниатюры, либо загружаем в files[0], рисуем миниатюру, потом загружаем следующий файл в files[0] и т. д. То же самое и с PHP, только там еще и кол-во запросов к серверу увеличивается
 
разница огромная, по одному файлу это асинхронно
 
Silentland, разница в том, что пока пользователь думает что загружать еще или дописывает письмо, файл уже будет загружен, это экономит время. А в случае, если он потеряет соединение, письмо останется в черновиках с загруженными файлами.
 
Наверное, я непонятно описал ситуацию... Пользователь выбирает, допустим 5 файлов (либо перетаскивает их в нужное место) и они начинают загружаться. Разница в том, что в одном случае они идут на сервер в одном пост-запросе, в другом — будет пять последовательных запросов. Все запросы, конечно, асинхронные. Это все прозрачно для пользователя.
 
У сервера есть ограничение на размер POST запроса. Пусть оно будет 20 Мегабайт. Ты хочешь загрузить 5 файлов по 5 мегабайт, в итоге если послать их все сразу, сервер пошлет тебя. Не?
 
  • Like
Реакции: SiZE
Оу! Об этом я не подумал! Если так, то задача не настолько тривиальна. Возможно, стоит пожертвовать производительностью...
 
Возможно, стоит пожертвовать производительностью...
Какой нахрен производительностью? У пользователя файл в 5 Mb загружается, допустим, 3 секунды, а сам скрипт инициализиуется на 0.001 + время на лишний HTTP-запрос примерно того же порядка. Ты экономишь доли секунды на что?
 
Процессор на сервере больше сил на обработку запросов расходует, сама же загрузка его не так напрягает, хотя разница, наверное, будет проявляться только в проектах масштаба Контакта.
 
Ты считаешь нормальным выбирать между коробкой спичек и зажигалкой перед походом, основываясь на том что из них легче?
 
Ты считаешь нормальным выбирать между коробкой спичек и зажигалкой перед походом, основываясь на том что из них легче?
Стараюсь выбирать наиболее простое решение, главное чтобы серьезных подводных камней не появилось. О них и спрашиваю
 
Silentland
современная разработка требует не долго анализа подобных камней, а такой архитектуры, чтобы приложению было плевать как делается загрузка или изменения можно было вносить быстрее чем сторипойнт, так что не заморачивайся овереархитекторингом.
 
Сверху