На мой взгляд, такой вещи как "правильно" не существует, есть лишь задача, которая выполняется или нет. Однако, позволю себе несколько советов исходя из описания
1. Безопасность важнее производительности. Хранить пароли в открытом виде на клиенте - плохая идея. Если рассматривать заливку на облако, то в облако пользователя с предоставлением затем доступа к файлам вашему приложению
2. Если Вы уверены, что производительность будет узким местом, можно рассмотреть вариант нарезки на клиенте (код усложнится из-за необходимости поддержки разных браузеров). Проблему можно решить также покупкой более сильного железа.
В общем случае я применяют такую стратегию: для начала реализовать самый простой вариант и оптимизировать в случае необходимости.