如何使用毕加索使用动态 URL 缓存 S3 存储桶中的图像?



我正在使用毕加索使用动态URL(预签名URL)从我的私有S3存储桶加载图像。问题是每次我想显示相同的图像时,它都会创建一个新的 URL 并再次下载它,而不是缓存相同的图像并显示它。

有没有办法在使用不同的 URL 时缓存相同的图像?

示例代码:

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.HOUR, +6);
Date date = calendar.getTime();
URL url = s3.generatePresignedUrl(
"my-bucket",
"my-image.jpg,
date
);
String urlString = url.toString();
Picasso.get()
.load(urlString)
.into(imageView);

动态网址示例:

第一次点击后:https://s3.us-east-2.amazonaws.com/my-bucket/my-image.jpg?...&X-amz-签名=96dd696fdaf464fa42b2416f6261ba05e17d585578816e854e0a97a2782d177c

第二次点击后:https://s3.us-east-2.amazonaws.com/my-bucket/my-image.jpg?...&X-amz-Signature=8733d7fc9788759a851cf12fb1d1118584ca1f7cc33dc210b3fea4f762707b82

如您所见,生成的URL的第一部分始终相同,唯一更改的是X-Amz签名之后的部分。

我使用预签名 URL 的唯一原因是为了更好的安全性。我想在我的 S3 存储桶上进行私有访问,以避免从未知来源等强制下载。

为什么不使用Glide,它会自动处理内存和磁盘的缓存。它真的很好,工作顺利。

您可以通过访问他们的官方链接了解更多信息。

最新更新