我在AWS上托管了API,并且我在iOS应用中编写了以下代码,以使用这些API请求数据。现在一段时间需要7到10秒才能恢复响应,有时还需要1-2秒钟。
let request = NSMutableURLRequest(url: url,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 30)
request.httpMethod = methodName
request.allHTTPHeaderFields = (isAuthHeaderRequired ? headers as? [String : String] : nil)
if let dictParam = parameters, JSONSerialization.isValidJSONObject(dictParam) {
let postData: Data? = try? JSONSerialization.data(withJSONObject: dictParam, options: [])
let strParam = String(data: postData ?? Data(), encoding: .utf8)
request.httpBody = postData
}
else {
print("Parameters : No Input Parameters")
}
let session = URLSession.shared
dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
// Handle response and proceed further
})
dataTask.resume()
我还验证了没有令牌过期的问题。
我想弄清楚AWS设置是否有问题,仅在某些情况下会导致此延迟问题,或者应用程序方面需要任何东西。
答案 0 :(得分:1)
这里缺少很多信息,我想我只能提供一个一般性的答案。
我看到您已经用“ aws-lambda”标记了这个问题。如果您使用Lambda支持API,建议您仔细阅读冷启动。
总而言之,您正在运行的lambda实例将每隔一段时间终止一次,这有时会导致您的“第一个”请求启动lambda的全新启动。为了验证这一点,您可以查看Cloudwatch日志。
答案 1 :(得分:0)
您是否尝试过使用其他API来检查它们是否同时返回?您可以使用json-gen创建一个简单的API响应,您可以从您的应用中调用该API响应以检查所需的时间。
您还提到过您正在使用AWS,如果您使用的是lambda,则有意义的是,响应通过的时间不同,这就是lambda的工作方式,因为它是无服务器的,它需要“旋转” ”作为第一个响应。