Was ist schneller? Hotlinking (Inline-Linking) zu einem absolute URI oder die Ressource selbst hosten und einen relativen URI verwenden?
>In seinem Tutorial, wie HTML5-Elemente im Internet Explorer formatiert werden können , erklärt Remy Sharp Dieses Hot-Linking verursacht eine "extra HTTP [GET] Anfrage". Ich stimme zu, wenn Sie die Direktverlinkung mit Kopieren & amp; Einfügen (Einbetten) des Skripts in den HTML-Code. Aber wenn Sie das Hot-Linking mit dem lokalen Hosting des Skripts und der Verknüpfung über einen relativen Pfad vergleichen, würde ich argumentieren, dass Hot-Linking tatsächlich (fast) etwas schneller ist, da der Browser das Absolute nicht auflösen muss URL aus dem relativen Pfad In beiden Fällen wird jedoch eine zusätzliche HTTP-GET-Anforderung ausgeführt, richtig?
Was ist schneller? Hotlinking (Inline-Linking) zu einem absolute URI oder die Ressource selbst hosten und einen relativen URI verwenden?
>In seinem Tutorial, wie HTML5-Elemente im Internet Explorer formatiert werden können , erklärt Remy Sharp Dieses Hot-Linking verursacht eine "extra HTTP [GET] Anfrage". Ich stimme zu, wenn Sie die Direktverlinkung mit Kopieren & amp; Einfügen (Einbetten) des Skripts in den HTML-Code. Aber wenn Sie das Hot-Linking mit dem lokalen Hosting des Skripts und der Verknüpfung über einen relativen Pfad vergleichen, würde ich argumentieren, dass Hot-Linking tatsächlich (fast) etwas schneller ist, da der Browser das Absolute nicht auflösen muss URL aus dem relativen Pfad In beiden Fällen wird jedoch eine zusätzliche HTTP-GET-Anforderung ausgeführt, richtig?
Ich würde mir vorstellen, dass die einzigen Dinge, die eine solche Situation beeinflussen, die relativen Geschwindigkeiten der betreffenden Server (für die Geschwindigkeit) sind und ob Sie erwarten, dass dieser Code auf einer anderen Site ausgeführt wird (zur Wartbarkeit).
Angenommen, die Ressource ist nicht in das HTML-Dokument selbst eingebettet (dh sie ist verknüpft) und die Ressource befindet sich auf demselben Server mit demselben Hostnamen. Die Zeit zum Abrufen der Ressource über absolute oder relative URI sollte praktisch identisch sein . Eine weitere HTTP-Anfrage wird in beide Richtungen gesendet. Wenn Sie das "virtuell identisch" aufteilen möchten, würde ich mich auf den relativen Pfad stützen, der sehr, sehr, sehr klein ist, da der HTML-Code viel weniger analysiert werden muss, als das Pfad-Parsing (wie Sie bereits erwähnt haben) schneller (weil der Zeichenketten-Tokenizer nicht mit dem Domain-Abschnitt der Adresse / der Adresse, die kürzer ist, umgehen muss). Der Unterschied hier ist nur aus Neugierde realistisch. Ich kann mir nicht vorstellen, dass eine Seite bis zu diesem Level optimiert wird (obwohl es eine gute Faustregel sein kann? Relative Pfadangabe erlaubt es Ihnen, die Domain / den Pfad der Seite frei zu ändern ohne alle darin enthaltenen URIs neu schreiben zu müssen.)
Wenn die Ressource nicht auf demselben Server gehostet wird und der Server des referenzierenden HTML-Dokuments KeepAlive aktiviert hat, muss eine andere TCP-Verbindung initialisiert werden, damit eine Verbindung hergestellt werden kann der zweite Server (sowie eine DNS-Abfrage zum Auflösen des Hostnamens des anderen Servers, vorausgesetzt, der Zugriff erfolgt nicht über die IP-Adresse), was zu einem zusätzlichen Overhead im Vergleich zu mehreren referenzierten Ressourcen auf demselben Server führt (wo die GET-Anforderungen wären) innerhalb der bestehenden TCP-Verbindung ausgegeben werden.)
Das gleiche gilt für einen Server, auf dem KeepAlive nicht aktiviert ist. Eine TCP-Verbindung wird für jede angeforderte Ressource initialisiert.
Die Zeit, die der Client benötigt, um den relativen URI aufzulösen, ist absolut vernachlässigbar.
Es macht also keinen Unterschied, ob Sie eine Verknüpfung zu einer Ressource in der gleichen Domäne des Dokuments herstellen, indem Sie absolute oder relative URIs verwenden.
Der einzige Unterschied besteht darin, dass die Ressource auf einem anderen Server gehostet wird. Dann benötigen Sie eine zusätzliche TCP-Verbindung zu diesem Server, während eine zusätzliche HTTP-Anforderung an einen Server, mit dem Sie bereits eine Verbindung haben, diese Verbindung verwenden kann.
Dies ist eher mit etwas anderem wie tcp als http per se zu tun. Wenn Sie heutzutage zwei Objekte vom gleichen Webserver erhalten, wird Ihr Browser wahrscheinlich über dieselbe TCP-Verbindung verfügen. Das sind zwei HTTP-Transaktionen über eine TCP-Verbindung. Dies vermeidet den Aufwand, eine weitere TCP-Verbindung herzustellen. Dieser Overhead ist im Hinblick auf den Datenverkehr gering, kann jedoch viel Latenz beinhalten.
OTOH, zwei http-Transaktionen, wo sie jeweils zu verschiedenen Servern gehen, vielleicht schneller, oder vielleicht nicht. True, Sie haben den Overhead von zwei TCP-Verbindungen. In diesem Fall werden serialisiert. Sie müssen abgeschlossen sein, bevor die zweite beginnen kann. Wenn Sie jedoch viele Objekte herunterziehen, können die Verbindungen 2., 3., 4. usw. alle parallel ablaufen und das Latenzproblem maskieren. In diesem Szenario können die Dinge viel schneller gehen, da kleine Objekte möglicherweise nicht der Bandbreitenbeschränkung Ihres ISP unterliegen.
Die Gewässer sind in der Tat matschig.
Behalten Sie Latenz und Bandbreite im Auge. Es hängt wirklich von der Anzahl und Größe Ihrer Ressourcen ab.
Die Zeit, die der Client benötigt, um den relativen URI aufzulösen, ist absolut vernachlässigbar.
Es macht also keinen Unterschied, ob Sie eine Verknüpfung zu einer Ressource in der gleichen Domäne des Dokuments herstellen, indem Sie absolute oder relative URIs verwenden.
Der einzige Unterschied besteht darin, dass die Ressource auf einem anderen Server gehostet wird. Dann benötigen Sie eine zusätzliche TCP-Verbindung zu diesem Server, während eine zusätzliche HTTP-Anforderung an einen Server, mit dem Sie bereits eine Verbindung haben, diese Verbindung verwenden kann.
Dies ist eher mit etwas anderem wie tcp als http per se zu tun. Wenn Sie heutzutage zwei Objekte vom gleichen Webserver erhalten, wird Ihr Browser wahrscheinlich über dieselbe TCP-Verbindung verfügen. Das sind zwei HTTP-Transaktionen über eine TCP-Verbindung. Dies vermeidet den Aufwand, eine weitere TCP-Verbindung herzustellen. Dieser Overhead ist im Hinblick auf den Datenverkehr gering, kann jedoch viel Latenz beinhalten.
OTOH, zwei http-Transaktionen, wo sie jeweils zu verschiedenen Servern gehen, vielleicht schneller, oder vielleicht nicht. True, Sie haben den Overhead von zwei TCP-Verbindungen. In diesem Fall werden serialisiert. Sie müssen abgeschlossen sein, bevor die zweite beginnen kann. Wenn Sie jedoch viele Objekte herunterziehen, können die Verbindungen 2., 3., 4. usw. alle parallel ablaufen und das Latenzproblem maskieren. In diesem Szenario können die Dinge viel schneller gehen, da kleine Objekte möglicherweise nicht der Bandbreitenbeschränkung Ihres ISP unterliegen.
Die Gewässer sind in der Tat matschig.
Behalten Sie Latenz und Bandbreite im Auge. Es hängt wirklich von der Anzahl und Größe Ihrer Ressourcen ab.
Ich würde mir vorstellen, dass die einzigen Dinge, die eine solche Situation beeinflussen, die relativen Geschwindigkeiten der betreffenden Server (für die Geschwindigkeit) sind und ob Sie erwarten, dass dieser Code auf einer anderen Site ausgeführt wird (zur Wartbarkeit).
Angenommen, die Ressource ist nicht in das HTML-Dokument selbst eingebettet (dh sie ist verknüpft) und die Ressource befindet sich auf demselben Server mit demselben Hostnamen. Die Zeit zum Abrufen der Ressource über absolute oder relative URI sollte praktisch identisch sein . Eine weitere HTTP-Anfrage wird in beide Richtungen gesendet. Wenn Sie das "virtuell identisch" aufteilen möchten, würde ich mich auf den relativen Pfad stützen, der sehr, sehr, sehr klein ist, da der HTML-Code viel weniger analysiert werden muss, als das Pfad-Parsing (wie Sie bereits erwähnt haben) schneller (weil der Zeichenketten-Tokenizer nicht mit dem Domain-Abschnitt der Adresse / der Adresse, die kürzer ist, umgehen muss). Der Unterschied hier ist nur aus Neugierde realistisch. Ich kann mir nicht vorstellen, dass eine Seite bis zu diesem Level optimiert wird (obwohl es eine gute Faustregel sein kann? Relative Pfadangabe erlaubt es Ihnen, die Domain / den Pfad der Seite frei zu ändern ohne alle darin enthaltenen URIs neu schreiben zu müssen.)
Wenn die Ressource nicht auf demselben Server gehostet wird und der Server des referenzierenden HTML-Dokuments KeepAlive aktiviert hat, muss eine andere TCP-Verbindung initialisiert werden, damit eine Verbindung hergestellt werden kann der zweite Server (sowie eine DNS-Abfrage zum Auflösen des Hostnamens des anderen Servers, vorausgesetzt, der Zugriff erfolgt nicht über die IP-Adresse), was zu einem zusätzlichen Overhead im Vergleich zu mehreren referenzierten Ressourcen auf demselben Server führt (wo die GET-Anforderungen wären) innerhalb der bestehenden TCP-Verbindung ausgegeben werden.)
Das gleiche gilt für einen Server, auf dem KeepAlive nicht aktiviert ist. Eine TCP-Verbindung wird für jede angeforderte Ressource initialisiert.
Tags und Links http performance absolute-path relative-path hotlinking