【问题标题】:Developing a cache compatible with firebase开发与 firebase 兼容的缓存
【发布时间】:2018-10-07 17:28:36
【问题描述】:

在我的项目中,我使用 Firebase 实时数据库和 Firebase 存储。来自数据库的结果会获得缓存,但来自 Firebase 存储的信息不会。我想创建一个与实时数据库兼容的缓存系统,以便引用 Firebase Storage 中保存的文件的部分数据库将从数据库引用包含的 url 创建一个缓存文件。我该怎么做呢?

【问题讨论】:

  • 您使用什么来显示存储中的内容?我假设这些是图像并且您正在使用 Java 编码?你看过像 Picasso 或 Glude 这样的图像加载库吗?他们通常有一些内置的缓存机制
  • 很抱歉之前没有提到,但我正在存储视频并使用 exoplayer 播放它们。我尝试使用 exoplayer 进行缓存的尝试是徒劳的。 @TheeBen
  • 没问题,我强烈建议您为视频找到另一个选项。 Firebase 存储不适用于视频。甚至 Firebase 团队也提到了这个stackoverflow.com/a/37870706/5601401。另外,我在上一条评论中指的是 Glide,而不是 Glude。

标签: java android firebase firebase-realtime-database firebase-storage


【解决方案1】:

适用于 Cloud Storage 的 Firebase SDK 本身不支持离线访问。但我绝对推荐使用名为Glide 的Android 库来下载和显示图像。您将获得离线磁盘缓存支持,但这不是用于 Cloud Storage 的核心 Android SDK 的一部分。

因此,使用Glide,您永远不必担心实现任何类型的内存或磁盘缓存。你可以预期,如果 Glide 已经加载了一张图片,并且它还没有从磁盘缓存的内存中清除,那么它可以在离线时立即可用,而无需添加任何额外的代码。

您还可以配置sizes of the caches。以下是文档对默认磁盘缓存大小的说明:

内部缓存工厂将磁盘缓存放置在应用程序的内部缓存目录中,并设置最大大小为 250MB。

对于内存缓存:

默认大小由 MemorySizeCalculator 类确定。 MemorySizeCalculator 类会考虑给定设备的屏幕大小可用内存,以得出合理的默认大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多