【发布时间】:2013-10-23 15:28:19
【问题描述】:
我正在使用 picasso 从 amazon s3 下载一些图像,并在 android 应用程序的不同区域应用变换。使用调试我注意到,对于每个具有不同变换或图像视图大小的调用,毕加索将再次下载它并将变换后的图像缓存在内存中。是否有正确的方法让毕加索将原始图像存储在缓存中,然后应用转换而无需重新下载?网络带宽是我的用户案例的一个问题。
【问题讨论】:
我正在使用 picasso 从 amazon s3 下载一些图像,并在 android 应用程序的不同区域应用变换。使用调试我注意到,对于每个具有不同变换或图像视图大小的调用,毕加索将再次下载它并将变换后的图像缓存在内存中。是否有正确的方法让毕加索将原始图像存储在缓存中,然后应用转换而无需重新下载?网络带宽是我的用户案例的一个问题。
【问题讨论】:
原始图像将存储在磁盘缓存中。确保您的服务器发送正确的标头以允许在您希望的任何时间段内进行缓存。当第二次请求时,图片已经在磁盘缓存中,会立即返回。
默认情况下,磁盘缓存仅适用于 Android 4.0 及更高版本,因为它是在内置 HTTP 客户端中引入的。对于所有 API 级别的缓存,请在您的应用中包含 [OkHttp][1]。 Picasso 会自动看到 OkHttp 并使用它。这不仅可以为您提供无处不在的缓存,还可以为您提供更全面的 HTTP 客户端。
【讨论】: