毕加索只缓存原始下载图像的大小吗?

时间:2015-12-23 19:23:21

标签: android picasso

我读了一些关于这个问题的内容,但我也不明白:

1:如果我.resize(x,y)我的代码中有一张图片,那么Picasso只会缓存原始尺寸或调整大小的尺寸吗?

2:内存和磁盘缓存是否存储不同的缓存密钥?

2 个答案:

答案 0 :(得分:7)

是和否。

Picasso缓存已调整大小的图像。如果您在URL上调用var matrix = [] matrix[1] = [] matrix[1][1] = "foo" matrix.forEach(function(column){ column.forEach(function(cell){ console.log(cell); }); }); 两次,则第二个请求将使用缓存在内存中的已调整大小的图像。在这种情况下,HTTP客户端将永远不会再次看到URL。

Picasso使用的HTTP客户端将缓存原始图像(如果配置为这样,并且标题允许)。如果您在URL上调用resize(50, 50),则HTTP客户端会将原始文件缓存在磁盘上,这样,如果您在该URL上调用resize(50, 50),则HTTP客户端无需再次获取该图像。

HTTP客户端缓存对Picasso完全不透明。它没有看到或控制其内容。 Picasso对内存缓存中不可用的每个URL发出HTTP请求,HTTP客户端是否在HTTP客户端内完全控制HTTP客户端下载或从本地缓存中提供服务。

答案 1 :(得分:1)

1 - 是的,毕加索只能缓存原始大小。

2 - 是的。

使用with()返回的全局默认Picasso实例会自动使用适合大多数实现的默认值进行初始化。

  • LRU内存缓存占可用应用程序RAM的15%

  • 2%存储空间的磁盘缓存高达50MB但不低于5MB。

有关毕加索缓存的更多信息。

How do I use disk caching in Picasso?

与滑行的比较(也有关于缓存的信息)

http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en