我读了一些关于这个问题的内容,但我也不明白:
1:如果我.resize(x,y)
我的代码中有一张图片,那么Picasso只会缓存原始尺寸或调整大小的尺寸吗?
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