gpt4 book ai didi

objective-c - AFNetworking 并发 Http 请求

转载 作者:行者123 更新时间:2023-12-03 17:02:29 25 4
gpt4 key购买 nike

我需要从 API 下载大约 200 个文件。它们都只有 15KB 左右。我当前的代码如下所示:

NSOperationQueue* opQueue = [[NSOperationQueue alloc]init];
[opQueue setMaxConcurrentOperationCount:8];

NSString* baseUrl = @"https://someapi.com/somejson.json?page=";

for(int n = 0; n <= numberOfPages; n++) {
@autoreleasepool {

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%d", baseUrl, n]]cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];


AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Done");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error");
}];

[opQueue addOperation:operation];

}
};

虽然这工作正常,但我很好奇是否有更快的方法来做到这一点。目前下载文件大约需要 20 秒。由于它们都那么小,我猜花费最多时间的是等待服务器响应。是否有更好的方法对它们进行排队,以便所有连接都在“同一”时间建立,或者这只是一种硬上限?

我已经尝试过设置

[opQueue setMaxConcurrentOperationCount:8];

各种不同的值,以及根本不设置它。但这似乎并没有真正提高性能。

这是其中一个连接的 Charles 日志。其他的几乎相同,但如果有必要我可以发布更多内容。

URL https://<hidden>&page=0
Status Complete
Response Code 200 OK
Protocol HTTP/1.1
Method GET
Kept Alive No
Content-Type application/json; charset=utf-8
Client Address /127.0.0.1
Remote Address <hidden>
Timing
Request Start Time 24.02.15 09:49:58
Request End Time 24.02.15 09:49:58
Response Start Time 24.02.15 09:49:59
Response End Time 24.02.15 09:49:59
Duration 1.18 sec
DNS 1 ms
Connect 42 ms
SSL Handshake 127 ms
Request 0 ms
Response 1 ms
Latency 974 ms
Speed 8,36 KB/s
Response Speed 9.626,95 KB/s

Size
Request Header 283 bytes
Response Header 552 bytes
Request -
Response 9,09 KB (9306 bytes)
Total 9,90 KB (10141 bytes)
Request Compression -
Response Compression 91,8% (gzip)

最佳答案

看起来延迟是获得请求响应所需时间的主要因素。可能的原因之一是使用代理网络。另请注意,不仅仅是延迟,连接、SSL 握手所需的时间也会导致持续时间 1.18 秒

关于objective-c - AFNetworking 并发 Http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28633277/

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