Qual è il modo più veloce per determinare l'URL completo da un URL relativo (dato un URL di base)

StackOverflow https://stackoverflow.com/questions/26855

Domanda

Attualmente sto utilizzando il modulo di URI::URL per generare un URL completo da un URL relativo;tuttavia, non è veloce come vorrei che fosse.Qualcuno sa un altro modo per fare questo, che potrebbe essere più veloce?

È stato utile?

Soluzione

Il seguente codice dovrebbe funzionare.

$uri = URI->new_abs( $str, $base_uri )

Si dovrebbe anche dare un'occhiata al l'URI pagina search.cpan.org.

Altri suggerimenti

Appena successo in tutta questo articolo che evidenziano carenze in Redhat/Centos/Fedora implementazioni di Perl, che influenzano URI profondamente.

Se si esegue uno di questi sistemi Linux, si potrebbe desiderare di ricompilare il Perl da una fonte originale (non RPM sorgente).

Ho capito che chiunque è in esecuzione il codice del perl con la distribuzione perl interpretter su Redhat 5.2, Centos 5.2 o Fedora 9 è probabile che una vittima.Sì, anche se il codice non usa la fantasia benedire/sovraccarico idioma, molti moduli di CPAN fare!Questa ricerca di google mostra 1500+ moduli di utilizzare il benedica/sovraccarico idioma e includono alcuni davvero popolari, come URI, JSON....

...A questo punto, ho deciso di ricompilare perl dall'origine.Il bug era andato.E la differenza è spaventosa.Tutto ciò ha seriamente veloce.Le cpu sono agghiacciante in un loadavg sotto 0.10 e siamo stati elaborazione dati 100 a 1000 volte più veloce!

Brendan, mi hanno chiarito che non posso garantire che il percorso relativo è andare a guardare come.Potrebbe essere piuttosto difficile (ad es.dispone di una barra davanti, non dispone di una barra, ha "../", ecc).

Pietro, che è quello che sto usando ora.O è più veloce utilizzando, quindi, la URI::URL->new($path)->abs?

Potrebbe dipendere un po ' come ottenere quelle 2 stringhe.Probabilmente sicuro, a prova di fuoco modo di fare che è quello che è in URI::URL o librerie simili, in cui tutte le alternative, compresi quelli pericolosi, potrebbe essere considerato.Forse più lento, ma in alcuni ambienti, maggiore sarà la velocità di un proiettile di andare al vostro piede.

Ma se vi aspettate qualcosa di semplice, non complicato potrebbe vedere se si inizia con / catene,../, o qualsiasi altro tipo char.Il 1 ° vorresti inserire il nome del server + l'url, il 2 ° chop percorsi da l'uri di base fino a raggiungere in una delle altre 2 alternative, o basta aggiungere l'url di base.

Forse ho sbagliato termine, il bastone, ma non,

$full_url = $base_url . $relative_url

lavoro?IIRC Perl per l'elaborazione del testo è abbastanza rapido.

@lennysan Ah sì, naturalmente.Mi dispiace non posso aiutarti, il mio Perl è piuttosto arrugginito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top