Firebase+glide,缓存策略
Firebase+glide, caching strategy
我正在使用 Glide 和 Firebase 来加载和兑现图像。通常,我将 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 时唯一的方法。此外,启用持久性和其他实时数据库怪癖可以使其无缝快速!
我正在使用 Glide 和 Firebase 来加载和兑现图像。通常,我将 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 时唯一的方法。此外,启用持久性和其他实时数据库怪癖可以使其无缝快速!