【问题标题】:Glide caching behaviourGlide 缓存行为
【发布时间】:2017-09-07 11:57:10
【问题描述】:

我有简单的缓存问题: 我有旧的“name.jpg”,然后客户上传新的“name.jpg”,客户看不到任何更改,因为它仍然缓存旧的“name.jpg”。

我知道如何关闭缓存,但这不是一个好的决定,所以我试图找到更好的。

所以问题是:

如果我在问号后添加 get 参数,缓存如何工作?

例如我有网址

http://example.com/name.jpg?cache_time=111

然后我将其替换为

http://example.com/name.jpg?cache_time=222

它会下载第二个 name.jpg 并替换现有的吗?我知道它在浏览器中处理cssjs 文件,但对glide 的行为一无所知。

【问题讨论】:

  • 您可能想查看 Glide 请求构建器的 signature() 方法。它允许您添加自己的用于无效的数据。从他们的javadoc:设置一些额外的数据混合到内存和磁盘缓存键中,允许调用者更好地控制缓存数据何时失效。注意 - 签名不会替换缓存密钥,它纯粹是附加的。

标签: android android-glide


【解决方案1】:

您在 url 查询中传递的任何参数都将发送到提供图像的服务器,并且只有当该服务器处理该确切参数 (cache_time) 时,行为才会有任何差异。

但是,缓存 glide 并不基于您发送到服务器的内容,而是基于您为 glide 提供的配置。

我建议您查看 glide 如何处理缓存,并在您知道特定图像已更改时手动使缓存无效。

这是一个很好的起点:Remove image from cache in Glide library。它还提供了如何使用上面评论中提到的signature()的示例。

【讨论】:

  • cache_time 是“Cache-Control: max-age”标头,对吗?如果是,看起来它不能正常工作
猜你喜欢
  • 2017-02-25
  • 2017-11-16
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
相关资源
最近更新 更多