【问题标题】:Firebase+glide, caching strategyFirebase+glide,缓存策略
【发布时间】:2017-11-16 21:23:59
【问题描述】:

我正在使用 GlideFirebase 来加载和兑现图像。通常,我将Signature 与图像创建时间一起使用,然后确定缓存时间。但在 Firebase 中,我只能使用第二个请求 getMetadata() 来获得创建时间。当我将存储中的一个图像更改为另一个具有相同名称的图像时,如何正确进行缓存?我应该使用getMetadata()还是其他方式?

  Glide.with(getContext())
                    .using(new FirebaseImageLoader())
                    .load(storageReference.child(item.getImageUrl()))
                    .placeholder(R.drawable.category_image_not_found)
                    .signature(???)
                    .into(image);

【问题讨论】:

    标签: android firebase caching firebase-storage android-glide


    【解决方案1】:

    从我记事起,我就陷入了类似的境地!使用getMetadata() 很慢,并且会导致延迟。我的想法是,为了让我的图像保持最新,除了合并实时数据库之外别无选择。这可以通过以下方式之一完成:-

    第一:

    每当编辑特定存储位置的图像时,您都会在实时数据库中更新该图像节点的timestamp。而当你想显示图像时,只需下载它的时间戳并编写一个类似于你提到的Glide.signature(timestamp) 方法。

    第二:

    上传/编辑图片时只需获取图片的下载URL,并将该URL保存在实时数据库中。这样,每当更新图像时,都会将不同的 URL 保存到同一位置。这保证了您的缓存不会显示过时的图像(更改源 URL 是 Glide 使缓存失效的提倡方法)。

    我了解首先从实时数据库中检索数据然后下载图像可能会产生开销。但是,这是使用 Glide + Firebase 时的唯一方法。此外,启用持久性和其他实时数据库怪癖可以使其无缝快速!

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 2012-09-05
      • 2020-08-03
      • 2011-11-12
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多