Что вы подразумеваете под «наиболее эффективным», не совсем понятно. Я сделаю некоторые предположения и отвечу заранее в соответствии с ними.
Решение для кэша
В основном то, что вы уже сделали. Это довольно эффективная загрузка всего этого сразу (извлечение во временную папку), потому что, когда вам нужно что-то повторно использовать, больше всего не нужно делать больше. Это обычная практика некоторых тяжелых приложений для загрузки ресурсов / модулей / и т.д. при их запуске.
Obs¹: Поскольку вы рассматриваете нехватку дискового пространства как проблему, если вы хотите придерживаться этого, желательно, чтобы вы обрабатывали этот случай программно и давали пользователю некоторое предупреждение, поскольку у него мало свободного места в хранилище. критически важен.
TL; DR - Сначала расходуется, но позже - быстрее для повторного использования активов .
Ленивая загрузка
Еще одна очень распространенная концепция, которая заключается в том, чтобы «загружать так, как вам нужно, только то, что вам нужно». Это эффективно, потому что этот подход гарантирует, что ваше приложение загружает только минимум, необходимый для запуска, а затем загружает вещи по требованию пользователя.
Obs¹: Это выглядит очень похоже на то, что вы сделали во время попытки № 2.
TL; DR - Быстрее при запуске, медленнее во время выполнения .
«Умная» загрузка
Это не настоящее имя, но оно удовлетворительно описывает то, что я имею в виду. По сути, сосредоточьтесь на понимании цели вашего проекта и смешайте оба предыдущих решения в соответствии с вашим контекстом, чтобы вы могли достичь лучшей общей производительности в своем приложении, уменьшая компромиссы для каждого подхода.
Пример:
Теперь, независимо от вашего окончательного решения, не следует игнорировать следующие соображения:
- Память всегда будет быстрее записывать/ read than disk
- Частичное разархивирование (настройка определенных файлов) возможно во многих пакетах (включая ADM-ZIP) и всегда быстрее, чем разархивирование всего, особенно если размер ZIP-файла огромен.
- Использование IndexedDB или пользовательской базы данных на основе файлов, такой как SQLite, дает в целом хороший результат для огромного количества файлов и «умного» подхода, поскольку запросы и организацияАта легче через них.
- Всегда помните причину каждого выбора дизайна приложения, чем лучше вы понимаете, почему вы что-то делаете, тем лучше будет ваш конечный результат.
- Тема 4как говорится, на мой взгляд , в этом случае вы действительно немного обдумали, но это неплохо, и это действительно замечательно иметь такую заботу о том, как вы можете делать вещи наилучшим образом,Я делаю это часто, даже если в этом нет необходимости, и это полезно для самосовершенствования.
Ну, я много написал: P
Я был бы очень рад, если бы все это помогло вамкаким-то образом.
Удачи!
TL; DR - нет закрытого ответа, основанного на вашем вопросе, это во многом зависит от контекста вашей заявки;некоторые из ваших попыток уже довольно хороши, но если вы приложите некоторые усилия для понимания контекста юзабилити для «разумной» обработки загрузки изображения, вы наверняка наградите вас.