NSURLSession的sharedSession非常慢。有没有办法加速dataTaskWithURL?

时间:2015-12-06 06:12:02

标签: ios swift performance https nsurlsession

当我在浏览器中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

0 个答案:

没有答案