Эффективно храните большое количество изображений в Unity Android / iOS - PullRequest
0 голосов
/ 17 апреля 2019

Я думаю об архитектурном решении о том, как решить следующую проблему:

A mobile приложение, разработанное с Unity , получает изображения с сервера периодически .Чтобы обеспечить быстрое время повторной загрузки изображений, я хочу кэшировать как можно большего количества этих изображений на клиентской стороне постоянно .Изображения не нуждаются в защите, и пользователи могут просматривать за пределами приложения.В настоящее время я делаю это, сохраняя загруженные изображения на SD-карте.При таком подходе у меня возникают следующие проблемы:

  • Множество небольших файлов могут замедлить работу телефона и / или приложения;Насколько я понимаю, много маленьких файлов хуже для здоровья памяти, чем одно большое (?)
  • Удаление устаревших изображений для сохранения доступной дисковой памяти кажется довольно трудным

Одна вещь, которая пришла мне в голову, - это использовать SQLite для хранения изображений, однако я узнал, что хранить большое количество больших двоичных объектов в БД не рекомендуется.Я мог бы сохранить пути к файлам изображений, и моя вторая проблема была бы решена таким образом, однако первая проблема сохраняется.

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

Правильно ли я отношусь к своим проблемам и каков наилучший способ решения этой проблемы?

Привет и большое спасибо,

Codehai

1 Ответ

0 голосов
/ 18 апреля 2019

Я не уверен насчет влияния многих файлов на здоровье памяти, но на ум приходят некоторые предложения:

  • Вы можете сжать изображения при записи их на диск и распаковать их перед использованием, чтобы уменьшить пространство

  • Для управления удалением старых изображений, возможно, вы могли бы создать задачу «сбора мусора», которая запускается с интервалом, чтобы обрезать самые старые фотографии, чтобы попасть под максимальный объем памяти или установить максимальный возраст для изображения

  • Использование HTTP-кэширования и CDN (например, CloudFront) может помочь минимизировать время отклика при запросе изображений по сети

...