当我在浏览器中ping相同的URL或使用终端ping时,响应时间小于300毫秒。当我在应用程序中使用下面的代码发出请求时,需要3秒钟才能获得响应数据。我甚至用http://www.google.com尝试了它,响应时间需要2-3秒才能完成。在Swift中从URL请求数据时,是否有任何技巧可以获得更快的响应?什么事情要求场面提出要求?有没有办法在构建呼叫之前预热连接?
UPDATE :如果我连续多次调用该函数,它会很快响应(~200ms)。这让我相信创建连接有一些加速时间 - 后续调用快速闪电。这是一个https呼叫,但我再次知道它不是服务器,因为ping和浏览器在几毫秒内处理它。在打开初始请求时,iOS / Swift中是否存在某种已知的延迟?
func phraseSearch(var text: String, completion: ([Translation])-> Void) {
let urlString = baseAPIString + "/search?q=test"
let session = NSURLSession.sharedSession()
let searchUrl = NSURL(string: urlString)
let task = session.dataTaskWithURL(searchUrl!) {
(data, response, error) -> Void in
if error != nil {
print(error?.localizedDescription)
} else {
let searchData: NSDictionary!
let translationsData: NSArray!
do {
searchData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary
} catch _ {
searchData = NSDictionary()
}
translationsData = searchData["translations"] as! NSArray
var translations = [Translation]()
for translation in translationsData {
let translation = Translation(data: translation as! NSDictionary)
translations.append(translation)
}
dispatch_async(dispatch_get_main_queue(), {
completion(translations)
})
}
}
task.resume()
}
更新:我添加了时间戳,以显示此屏幕截图的时间:Screenshot with time stamps