我正在使用Picasso通过动态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);
动态URL示例:
第一次点击后:https://s3.us-east-2.amazonaws.com/my-bucket/my-image.jpg?...&X-Amz-Signature=96dd696fdaf464fa42b2416f6261ba05e17d585578816e854e0a97a2782d177c
第二次单击后:https://s3.us-east-2.amazonaws.com/my-bucket/my-image.jpg?... &X-Amz-Signature = 8733d7fc9788759a851cf12fb1d1118584ca1f7cc33dc210b3fea4f762707b82
您可以看到生成的URL的第一部分始终是相同的,唯一变化的是X-Amz-Signature之后的部分。
我使用预签名URL的唯一原因是为了提高安全性。我想在我的S3存储桶上拥有私人访问权限,以避免从未知来源等处强制下载。