在Unity Android / iOS中有效存储大量图像

时间:2019-04-17 19:32:13

标签: android ios unity3d architecture storage

我正在考虑如何解决以下问题的体系结构决定:

使用 Unity 开发的移动应用程序会定期从服务器 接收图像。 为了使重新出现图像的重新加载时间更快,我想客户端持久地尽可能多地缓存这些图像。 图片无需受到保护,应用程序外部的用户可以查看。 目前,我是通过将下载的图像存储在SD卡上来完成此操作的。 通过这种方法,我有以下担忧:

  • 很多小文件可能会降低手机和/或应用程序的速度;据我了解,许多小文件对内存健康的影响要比一个大文件(?)
  • 删除陈旧图像以保留可用的磁盘内存似乎很困难

我想到的一件事是使用 SQLite 存储图像,但是,我了解到,不建议在db中存储很多blob。 我可以存储图像的文件路径,而我的第二个担忧将以这种方式解决,但是第一个问题仍然存在。

无法将图像预打包到资产文件夹中,它们将始终在运行时从服务器接收

我对我的担忧正确吗?面对这个问题时的最佳做法是什么?

问候和非常感谢,

Codehai

1 个答案:

答案 0 :(得分:0)

我不确定许多文件对内存健康的影响,但是我想到了一些建议:

  • 您可以在将图像写入磁盘时对其进行gzip压缩,并在使用前对其进行枪压压缩以减少空间

  • 对于管理旧图像的删除,也许您可​​以创建一个“垃圾收集”任务,该任务以一定的间隔运行以修剪最旧的照片,以使其位于最大内存占用量以下或强制最大使用期限。图片

  • 使用HTTP缓存和CDN(例如CloudFront)可以最大程度地缩短通过网络请求图像时的响应时间