gpt4 book ai didi

iphone - iOS - Amazon S3 下载缓慢

转载 作者:行者123 更新时间:2023-11-29 11:05:21 24 4
gpt4 key购买 nike

我正在创建一个 iOS 应用程序,它允许用户编写状态更新,人们可以对其发表评论,喜欢它,以多种方式与之交互,基本上状态更新有多个属性可以存储。想象一个应用程序的主屏幕,其中 50 多个状态更新显示在表格 View 中。

现在把你的眼睛移开,专注于一个练习/演示应用程序,一个试图在大型游戏之前掌握技术的开发人员(这就是我!)所以基本上,我已经开始在新加坡建立一个 S3 存储桶。我住在新加坡,所以附近有一台服务器,实际上一切都应该快速流畅。除了,它只是不是。它很慢,开始让我恼火。

我知道一个使用 S3 的应用程序可以加载带有评论、点赞等的高清全景图像,加载所有这些数据需要一秒钟或更多时间。我不确定他们实际上是如何执行该过程的,我知道他们将图像存储在 S3 上,但我只知道这些。在我的入门演示中,我只是上传一些文本(比如 20 条)然后下载它们,在我的 60 mbps wifi 下它需要大约 15 秒!这些文字每一个都不超过一个句子,它们是短语,所以我在这里真的有点困惑。

我有 CloudFront 设置,但它不适用于网站吗?我已经设置了管理分发和 URL 东西,但是如何在我的代码中设置?这可能是我要确定稍后在我的其他应用程序中发布的最大问题。即便如此,我住在新加坡并且存储桶在新加坡服务器中,因此用于自测/练习的 CloudFront 不是强制性的。

我发现这非常令人困惑,这是我生成的一些带注释的代码,是否有任何问题、误解导致它变慢?

- (void)loadObjects {

S3ListObjectsRequest *listObjectRequest = [[S3ListObjectsRequest alloc] initWithName: @"testbucketquotes.rohanprostudios"];
S3ListObjectsResponse *listObjectResponse = [[AmazonClientManager s3] listObjects:listObjectRequest];
if(listObjectResponse.error != nil)
{
}
else
{
S3ListObjectsResult *listObjectsResults = listObjectResponse.listObjectsResult;

if (objects == nil) {
objects = [[NSMutableArray alloc] initWithCapacity:[listObjectsResults.objectSummaries count]];
}
else {
[objects removeAllObjects];
}

// By defrault, listObjects will only return 1000 keys
// This code will fetch all objects in bucket.
NSString *lastKey = @"";
for (S3ObjectSummary *objectSummary in listObjectsResults.objectSummaries) {

if ([[objectSummary key] rangeOfString: @"UploadedQuote"].location != NSNotFound) {

[objects addObject:[objectSummary key]];
lastKey = [objectSummary key];

}
}

while (listObjectsResults.isTruncated) {
listObjectRequest = [[S3ListObjectsRequest alloc] initWithName: @"testbucketquotes.rohanprostudios"];
listObjectRequest.marker = lastKey;

listObjectResponse = [[AmazonClientManager s3] listObjects:listObjectRequest];
if(listObjectResponse.error != nil)
{
break;
}

listObjectsResults = listObjectResponse.listObjectsResult;

for (S3ObjectSummary *objectSummary in listObjectsResults.objectSummaries) {

if ([[objectSummary key] rangeOfString: @"UploadedQuote"].location != NSNotFound) {

[objects addObject:[objectSummary key]];

}

lastKey = [objectSummary key];
}
}

if (objects.count) {

for (int i = 0; i <= objects.count - 1; i++) {

S3GetObjectRequest *req = [[S3GetObjectRequest alloc] initWithKey:[objects objectAtIndex: i] withBucket: @"testbucketquotes.rohanprostudios"];

`// asynchronously loads text (adds to operation queue)`
AsyncQuoteDownloader *quote = [[AsyncQuoteDownloader alloc] initWithRequest:req andViewController: self];

[operationQueue addOperation: quote];
// in 'AsyncQuoteDownloader' when finished calls a method in this view controller adding the response to an array and reloading a table
}

}
}

});
}

我的代码有什么问题导致它如此滞后吗?如果图像服务需要 1 秒来加载带点赞和评论等的 HQ 图像需要 1-2 秒,我会认为这将需要几毫秒的时间。

感谢您的帮助...

更新


好的,所以 key 的迭代似乎不是这里的问题,而是对象的下载。有什么想法吗?谢谢...

最佳答案

这是我第一次看到 Objective C,所以我在这里可能完全错了。但是......看起来你正在遍历整个桶的键。对于任何数量可观的 key ,这都将非常非常慢。

更好的设计是将查找表存储在 DynamoDB 之类的东西中(因为您已经在使用 AWS)。您可以在那里查询,获取一组匹配 ID(S3 键),然后从 S3 中获取匹配对象。

关于iphone - iOS - Amazon S3 下载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com