2015-12-25 18 views
5

Wie die Fragen besagt, was ist die effizienteste Möglichkeit zu überprüfen, ob eine Website-Link gültig ist?Die effektivste Art zu prüfen, ob eine Webseite verfügbar ist?

Momentan führe ich den folgenden Code aus, aber wenn er auf eine Liste von 20 URLs angewendet wird, dauert es unglaublich lange.

if let data = NSData(contentsOfURL: NSURL(string: thisURL)!) { 
    println(thisURL) 
} else { 
    println("doesn't exist") 
    break 
} 
+0

Wenn es sich um eine HTTP-URL handelt, können Sie mithilfe der HEAD-Anforderungsmethode schnell überprüfen, ob eine Verknüpfung gültig ist. Ehrlich gesagt, ich bin nicht vertraut mit NSURL Nutzung, aber sehen Sie, ob diese [Link] (http://sutes.co.uk/2009/12/nsurlconnection-using-head-met.html) hilft HEAD Anfrage mit NSURL.Along mit simulieren Da Netzwerkaufrufe immer mit einer gewissen Verzögerung verbunden sind, können Sie in Betracht ziehen, Ihre URL-Anfragen unter mehreren Threads zu verteilen, wenn dies möglich ist. –

+1

Diese Antwort löst Ihr Problem: http://stackoverflow.com/a/29050673/1079908 – ferit

Antwort

0

Die Lösung oben nur sagt Ihnen, wenn Sie eine gültige Internetverbindung haben - vorausgesetzt, Google.com verfügbar ist. Wenn Sie die Verfügbarkeit einer Gruppe von Websites prüfen möchten, müssen Sie diese einzeln überprüfen. Dann sind Sie mit den Timeout-Einschränkungen nicht zufrieden.

Eine Lösung ist 20 Hintergrund-Tasks zu starten zu versuchen, jede Website zugreifen zur gleichen Zeit, und baute die allgemeine Antwort auf wie die Ergebnisse in kommen.

Je nach Anwendung kann es gültig zu tun der gesamte Block von 20 in einer einzigen Hintergrundaufgabe - wenn Sie das früh genug in Ihrem Prozess starten können, ist es egal, dass es lange dauert - nur, dass es den Benutzer nicht zu halten scheint.

Verwandte Themen