Firebase+glide,缓存策略

Firebase+glide, caching strategy

我正在使用 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);

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

第一个:

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

第二个:

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

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