我正在使用Glide图像加载器从特定的URL加载图像,现在如果我将图像更新到同一URL,Glide仍然会在我的ImageView中显示缓存的图像。如何从相同的URL重新加载图像?
我正在使用Glide图像加载器从特定的URL加载图像,现在如果我将图像更新到同一URL,Glide仍然会在我的ImageView中显示缓存的图像。如何从相同的URL重新加载图像?
Glide.with(requireContext())
.load(myUrl)
.signature(ObjectKey(System.currentTimeMillis().toString()))
.into(myImageView)
选项1(Glide v3):使用StringSignature
来更改文件的修改日期。
URLs - 尽管使服务器更改URL并在URL内容更改时更新客户端是使URL无效的最佳方式,但您也可以使用StringSignature混入任意元数据。
Glide.with(yourFragment)
.load(url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis()))
.into(yourImageView);
如果所有其他方法都失败了,您既无法更改标识符,也无法跟踪任何合理的版本元数据,则可以选择以下选项之一:
选项2:您还可以使用diskCacheStrategy()
和DiskCacheStrategy.NONE
完全禁用磁盘缓存。
Glide.with(Activity.this).load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE )
.skipMemoryCache(true)
.into(imageView);
参考资料:https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation
.diskCacheStrategy(DiskCacheStrategy.NONE)
。Glide.with(context)
.load(url)
.apply(new RequestOptions()
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true))
.into(ImageView);
添加
签名(新的ObjectKey(String.valueOf(System.currentTimeMillis())))
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.cover_placeholder);
requestOptions.error(R.drawable.no_image_available);
requestOptions.signature(
new ObjectKey(String.valueOf(System.currentTimeMillis())));
Glide.with(MosaicFragment.this)
.setDefaultRequestOptions(requestOptions)
.load(finalPathOrUrl)
Glide.with(Activity.this)
.load(theImagePath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(myImageViewPhoto);
我使用了一个解决方法,因为其他方法对我都不起作用。
在我的情况下,我知道当服务器上的图像发生变化时,我只需在URL末尾添加?=
,对于Glide来说,这将是一个新的URL,而不是使用缓存,Glide将加载新的图像。
Glide.with(this)
.load(image_url)
.signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
.into(imageview);
参考:https://github.com/bumptech/glide/wiki/Caching-and-Cache-Invalidation
.signature(new ObjectKey(imageFile.lastModified()))
- undefined