Was ist der Schnellste Weg, um zu bestimmen, eine vollständige URL ein relativer URL (gegeben eine Basis-URL)

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

Frage

Ich bin derzeit mit dem Modul URI::URL generieren Sie eine vollständige URL ein relativer URL;aber es läuft nicht so schnell, wie ich möchte, es zu werden.Kennt jemand einen anderen Weg, dies zu tun, dass kann schneller sein?

War es hilfreich?

Lösung

Der folgende code sollte funktionieren.

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

Sie sollten auch einen Blick auf die URI der Seite auf search.cpan.org.

Andere Tipps

Gerade zufällig über in diesem Artikel welche Mängel in Redhat/Centos/Fedora-Implementierungen von Perl, die Auswirkungen auf die URI zutiefst.

Wenn Sie eine dieser Linux-Geschmacksrichtungen, die Sie möglicherweise möchten, kompilieren Sie Perl von der ursprünglichen Quelle (nicht RPM-Quelle).

Ich erkannte, dass jemand ausführen von perl-code mit der Verteilung perl interpretter auf Redhat 5.2, Centos 5.2, Fedora 9 ist wahrscheinlich ein Opfer.Ja, auch wenn der code nicht verwenden, die Lust segnen/überlast idiom, viele CPAN-Module!Diese google-Suche zeigt, 1500+ - Module nutzen die segnen/überlast idiom und Sie enthalten einige wirklich beliebt, wie URI, JSON....

...An diesem Punkt beschloss ich, kompilieren Sie perl aus dem Quellcode.Der Fehler war Weg.Und der Unterschied war entsetzlich.Alles wurde schnell ernst.CPUs wurden chilling at a loadavg unter 0,10 und wir wurden in die Verarbeitung von Daten zu 100x 1000x schneller!

Brendan, ich hätte klargestellt, dass ich nicht garantieren kann, was der relative Pfad Aussehen.Es könnte ziemlich heikel (z.B.hat ein slash an der front, nicht mit einem Schrägstrich, hat "../", etc.).

Peter, das ist, was ich jetzt verwende.Oder ist das dann schneller über den URI::URL->new($path)->abs?

Verlassen konnte, ein bisschen wie erhalten Sie die 2 strings.Wahrscheinlich die sicher, feuerfest Weg, das zu tun, was in URI::URL oder ähnlichen Bibliotheken, in denen alle alternativen, auch von schädlichen betrachtet werden würde.Vielleicht langsamer, aber in einigen Umgebungen schneller wird die Geschwindigkeit einer Kugel zu gehen, um Ihre eigenen Fuß.

Aber wenn Sie erwarten, dass es so etwas schlicht und nicht tricky sehen konnte, wenn er beginnt, mit /, Ketten ../, oder jede andere char.Die 1. wäre, den server-Namen + die url, die 2. chop Wege aus dem Basis-uri-bis zu zu bekommen in eine der 2 anderen alternativen, oder fügen Sie es einfach an die Basis-url.

Vielleicht hab ich das falsche Ende des Sticks aber nicht,

$full_url = $base_url . $relative_url

Arbeit?IIRC Perl-text-Verarbeitung ist ziemlich schnell.

@lennysan Ah, sicher, ja, natürlich.Leider kann ich nicht helfen, mein Perl ist ziemlich rostig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top