2015-12-25 9 views
5

Come indica la domanda, qual è il modo più efficiente per verificare se un link al sito web è valido?Il modo più efficace per verificare se una pagina web è attiva?

Attualmente sto eseguendo il seguente codice, ma quando applicato a un elenco di 20 URL, ci vuole incredibilmente a lungo per completare.

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

Se si tratta di un URL HTTP, è possibile utilizzare il metodo di richiesta HEAD per verificare rapidamente se un collegamento è valido. Francamente, non ho familiarità con l'utilizzo di NSURL, ma vediamo se questo [link] (http://sutes.co.uk/2009/12/nsurlconnection-using-head-met.html) aiuta a simulare la richiesta HEAD utilizzando NSURL. poiché, poiché le chiamate di rete subiscono sempre un ritardo, puoi considerare la possibilità di distribuire le tue richieste URL tra più thread, se ciò è fattibile. –

+1

Questa risposta risolve il tuo problema: http://stackoverflow.com/a/29050673/1079908 – ferit

risposta

0

La soluzione sopra indica solo se si dispone di una connessione Internet valida, presupponendo che Google.com sia disponibile. se si desidera verificare la disponibilità di un gruppo di siti Web, sarà necessario controllarli singolarmente e quindi si resteranno vincolati ai limiti di timeout.

Una soluzione è quella di lanciare 20 attività in background per tentare di accedere ogni sito web, allo stesso tempo, e costruire la risposta complessiva, i risultati sono disponibili in.

A seconda dell'applicazione, può essere valida per farlo l'intero blocco di 20 in un singolo task in background - se puoi iniziare abbastanza presto nel tuo processo, potrebbe non importare che ci voglia molto tempo - solo che non sembra reggere l'utente.

Problemi correlati