如何不在前端或数据库存储实际图片的前提下在App中展示图片?
方案合理性判定
你当前的实现逻辑并不合理。将可变的图片资源打包到前端安装包的方式,仅适用于极少部分不会迭代更新的内置静态资源。所有需要新增、更新的图片都采用这种方式存储,不仅会强制你每次更新资源都要走应用商店审核流程,大幅拉长迭代周期,还会持续增加安装包体积,降低用户的下载和更新意愿。
优化落地方向
- 独立托管静态图片资源
所有需要动态更新的图片都不要打包到前端安装包,你可以选用支持小流量免费额度的对象存储服务托管这类静态资源,不需要自己额外搭建静态文件服务器。上传后获取资源的公网访问链接imageUrl,将其存储到你的MongoDB中与对应业务对象绑定即可,移动端App运行时直接通过公网链接加载图片,更新图片不需要发布新版本。 - 不要直接在MongoDB中存储图片二进制内容
你的顾虑是正确的,免费版MongoDB实例的带宽、存储配额都十分有限,直接存储二进制图片不仅会快速耗尽免费额度,还会拖累数据库常规业务查询的性能。数据库本身的设计定位就不适合承载海量静态资源存储,仅存储资源的访问链接即可。 - 补充离线缓存兜底逻辑
如果部分图片需要支持离线场景使用,可以在App端增加图片缓存策略:首次加载对应imageUrl的图片后自动缓存到本地存储,后续访问优先读取本地缓存。你需要更新图片时,只需要替换MongoDB中绑定的imageUrl,App检测到链接变更后会自动拉取新的图片缓存,全程不需要发布应用版本。
内容的提问来源于stack exchange,提问作者Donny groezinger
相关产品推荐
相关产品推荐

