Glide 不使用缓存图像

Posted

技术标签:

【中文标题】Glide 不使用缓存图像【英文标题】:Glide Does not use Cached Image 【发布时间】:2020-09-23 14:30:39 【问题描述】:

您好,我正在使用 Glide 加载图像,在关注了许多帖子之后,我尝试使用 Glide 缓存来实现 RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop()

Glide.with(mContext) .load(imageUrl) .transition(ImageUtil.crossFadeTransition()) .apply(ImageUtil.requestOptionsForSlider()) .listener(glideRequestListner) .into(imageView)

我的知识是,如果我使用diskCacheStrategy(DiskCacheStrategy.ALL),那么上面的Glide 图像加载代码会在可用时自动使用缓存,如果没有,则下载,对吗?

但我每次调用代码时都会看到(检查我的网速计)它总是从给定的 url 获取/下载(即使我可以看到应用程序内存大小正在增加)。

我什至也试过这段代码-

val future: FutureTarget<File> = Glide.with(mContext) .load(imageUrl) .downloadOnly(500, 500)

似乎没有任何效果

我应该怎么做才能让Glide 使用缓存(如果可用)?我对缓存实现的概念有什么问题?非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

您确定它正在重新下载吗?您是否尝试在加载图像之前禁用互联网? 否则,对于同一张图片,您的图片 URL 是否始终相同? (因为 Glide 使用它作为缓存键)。 您可以在以下调用中使用它来检查图像是否在缓存中:

Glide.with(fragment) .load(url) .onlyRetrieveFromCache(true) .into(imageView);

【讨论】:

是的,我试过了,但正如我提到的,我在下载时检查了互联网仪表,并且在互联网被禁用时也没有显示任何内容 .onlyRetrieveFromCache(true) 没有返回任何东西,没有图像 我可以看到每次 imageurl 都被更改(后缀签名更改),所以我应该怎么做才能让 glide 明白它们是相同的图像 你应该找到一种方法来唯一标识你的图像并给它一个签名......你的对象的名称或ID等。bumptech.github.io/glide/doc/caching.html#cache-keys

以上是关于Glide 不使用缓存图像的主要内容,如果未能解决你的问题,请参考以下文章

Glide:在内存缓存中预加载图像(有或没有磁盘缓存)

Glide 不会从缓存位置加载图像

如何在 cakephp4 中使用 Admad cakephp-glide 删除 Glide 缓存?

清除滑动图像缓存 Android Studio

Glide系列之缓存策略

如何事先获取将存储在 Android/Java 缓存中的未来 Glide 图像大小?