【问题标题】:Picasso cache with different transforms applied应用了不同变换的毕加索缓存
【发布时间】:2013-10-23 15:28:19
【问题描述】:

我正在使用 picasso 从 amazon s3 下载一些图像,并在 android 应用程序的不同区域应用变换。使用调试我注意到,对于每个具有不同变换或图像视图大小的调用,毕加索将再次下载它并将变换后的图像缓存在内存中。是否有正确的方法让毕加索将原始图像存储在缓存中,然后应用转换而无需重新下载?网络带宽是我的用户案例的一个问题。

【问题讨论】:

    标签: android caching picasso


    【解决方案1】:

    原始图像将存储在磁盘缓存中。确保您的服务器发送正确的标头以允许在您希望的任何时间段内进行缓存。当第二次请求时,图片已经在磁盘缓存中,会立即返回。

    默认情况下,磁盘缓存仅适用于 Android 4.0 及更高版本,因为它是在内置 HTTP 客户端中引入的。对于所有 API 级别的缓存,请在您的应用中包含 [OkHttp][1]。 Picasso 会自动看到 OkHttp 并使用它。这不仅可以为您提供无处不在的缓存,还可以为您提供更全面的 HTTP 客户端。

    【讨论】:

    • 我正在使用 okhttp,似乎即使只是使用相同的片段更改活动以从毕加索加载,它也会再次下载它。但是返回上一个活动会命中缓存。看起来它正在缓存每个活动。
    • 它已经在缓存了,问题是 URI 的查询部分在每次请求时都会发生变化,这就是为什么磁盘缓存总是丢失,必须实现一个自定义缓存来删除查询#fragment 部分乌里。谢谢杰克。在此处查看更多信息:github.com/square/picasso/issues/267#issuecomment-26937784
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 2016-08-10
    • 2014-04-10
    • 2016-06-20
    • 2015-02-14
    • 2018-02-05
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多