2015-10-29 1 views
0


Я использую NSURL для отправки MySQL-запросов на веб-сервер для хранения данных моего приложения. Проблема в том, что запрос занимает около 15 секунд даже для простого ответа на 5 слов. Я сделал мой код максимально оптимизированным, но я не думаю, что он ускорился.
Код:
NSURL занимает много времени, чтобы вернуть содержимое URL. Есть ли способ ускорить его?

import UIKit 
import Foundation 

class ViewController: UIViewController { 

    @IBOutlet weak var testLabel: UILabel! 

    @IBAction func testButton(sender: UIButton) { 
     let myUrl = NSURL(string: "http://www.casacorazon.org/ios.html") 
     let request = NSMutableURLRequest(URL: myUrl!) 
     request.HTTPMethod = "POST" 
     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
      data, response, error in 
      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      self.testLabel.text = "\(responseString!)" 
      if error != nil { 
       print("Error: \(error)") 
      } 
     } 
     task.resume() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 

Если вы знаете способ, чтобы сделать код запуска немного быстрее, или Обрезать 15 секунд вниз, я хотел бы знать.

Thanks,
Nick

+0

Вы сузили этот вопрос отправленного кода или время ответа сервера? – rmaddy

+0

Выясните, как сделать тот же вызов, используя «завиток» от терминала, и посмотреть, сколько времени потребуется на Mac. Если это так, его сеть или сервер, если в вашем приложении что-то не так, что-то не так. –

ответ

3

Вы работаете в сети. Вы не меняете сеть. Это как раз то, как жизнь. Тебе все равно, сколько времени потребуется. Ваш метод обратного вызова будет вызван асинхронно, всякий раз, когда будет завершена сетевая связь. Это может быть через десять минут (ну, может быть, нет, потому что раньше, вероятно, будет тайм-аут). Ваша работа заключается в том, чтобы кодировать таким образом, что этот неопределенный промежуток времени в порядке.

2

Возможно, полезно запустить обратный вызов в очереди с приоритетом. Попробуйте это и было бы здорово, если бы вы прокомментировать сделал ли он или нет разницы, если я не буду удалять ответ и спасти себя от более смущения :)

@IBAction func testButton(sender: UIButton) { 
    let myUrl = NSURL(string: "http://www.casacorazon.org/ios.html") 
    let request = NSMutableURLRequest(URL: myUrl!) 
    request.HTTPMethod = "POST" 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     data, response, error in 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) { 
      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      if error != nil { 
       print("Error: \(error)") 
      } 
      dispatch_async(dispatch_get_main_queue()) { 
       self.testLabel.text = "\(responseString!)" 
      } 
     } 
    } 
    task.resume() 
} 
+0

Молния. Быстро. Ты для меня бог –

+0

Это почти мгновенно –

+0

ну тогда вы можете отметить его как правильный ответ :) – Lukas

 Смежные вопросы

  • Нет связанных вопросов^_^