我的s3bucket存在问题,其中包含数千个条目,并且列表需要花费太多时间。
就像现在一样,我使用;
检索对象ListObjectsResponse response = client.ListObjects(request);
foreach (S3Object entry in response.S3Objects.Where(p => p.Key.IndexOf(".mov") > 0 && DateTime.Parse(p.LastModified.ToString()) > DateTime.Now.AddDays(-1)).OrderByDescending(k => k.LastModified))
{
Console.WriteLine(entry.Key + Environment.NewLine);
}
通过下面的代码
在LIstObjectsRequest对象中使用文件夹规范 ListObjectsRequest request = new ListObjectsRequest
{
BucketName = "selectedbucket",
Prefix = "selectedfolder/",
MaxKeys = 2
};
这个简单检索所花费的时间是巨大的(大约7分钟),所以我需要做的是将结果限制在实际请求级别,而不是限制在检索s3bucket中的所有条目之后。
有没有办法通过直接在" client.ListObjects(request)"添加限制标准来加快速度。呼叫?我可以在ListObjectsRequest对象或类似的东西中添加标准吗?
提前感谢您的反馈和想法!
答案 0 :(得分:0)
问题解决了。我通过将Maxkeys增加到更高的数量(5000)而不是之前定义的2来增加返回值的数量。这限制了我理解的调用量,这是花费时间的。
ListObjectsRequest request = new ListObjectsRequest
{
BucketName = "selectedbucket",
Prefix = "selectedfolder/",
MaxKeys = 5000
};
这种性能从7分钟提高到约2秒。