2009-09-26 8 views
18

Ich lese über "HTTP persistent connection", aber irgendwie verstehe ich nicht, was persistent in diesem Zusammenhang bedeutet.
Könnten Sie das näher ausführen?Was genau bedeutet eine "persistente Verbindung"?

+2

Was Chaos bedeutet, ist, dass die Verbindung zwischen dem Client und Server nach dem Informationsaustausch nicht geschlossen ist - offen für die weitere Kommunikation. Dies ist viel schneller als das Herstellen einer neuen Verbindung jedes Mal, wenn Sie Informationen übertragen müssen. – NTDLS

Antwort

18

Die ganze Diskussion war bisher von der Seite des Browsers. Der Browser fordert zuerst die tatsächliche Seite an und analysiert die Seite und findet alle anderen benötigten Ressourcen, bevor diese Seite gerendert werden kann. Der Browser fordert diese Ressourcen und andere abhängige Ressourcen nacheinander an. Die Aufrechterhaltung einer dauerhaften Verbindung ist hier sehr effizient, da der Aufwand für das Erstellen und Löschen von Verbindungen vermieden wird.

Jetzt von Web-Server-Seite Dinge, eine dauerhafte Verbindung wäre eine, die es ermöglicht, Inhalte an den Webbrowser "pushen". Jetzt unterstützt HTTP dies nicht. Es gibt also einige Problemumgehungen mit Javascript, wo die Seite nach einiger Zeit grundlegend aktualisiert wird.

Sie können sehen, dass dieser Trick von vielen Web-basierten E-Mail-Providern verwendet wird, die ständig im Hintergrund nach neuen E-Mails suchen. Dies gibt das Gefühl, dass, wenn eine neue Post eintrifft, der Server die neue Postbenachrichtigung an den Webbrowser "schiebt". Aber eigentlich ist es der Webbrowser, der den Server auf neue Mails prüft. Ein weiterer Punkt, den ich erwähnen möchte, ist, dass wir tatsächlich keine Seitenaktualisierung sehen, die auf einen anderen Trick zurückzuführen ist, bei dem nur bestimmte Teile der Seite durch die Anfrage aktualisiert werden können. (TIPP: AJAX)

+0

Sehr informative Antwort! –

+1

Wenn ich eine Verbindung mit einem Webserver offenhalte, zeigt der Browser fortwährend eine Ladezeile an? –

+1

Ein Webbrowser zeigt nur eine Ladezeile an, wenn er tatsächlich etwas anfordert. Hintergrundinformationen, ob eine Verbindung offen ist oder nicht, sollten nicht in der Benutzeroberfläche des Browsers angezeigt werden. – Trainee4Life

28

Es bedeutet, dass der Server den Socket nicht schließt, sobald er fertig ist, indem er die Antwort ausgibt (also die Länge der Antwort muss anders angegeben werden, über Header oder Chunking), so dass der Client andere Anfragen auf demselben stellen kann Steckdose. Eine Webseite fordert oft mehrere andere Teile (Bilder, CSS, Skripte, ...) auf demselben Server wie die Seite selbst an. Die Wiederverwendung des Sockets für einige dieser weiteren Anfragen an den gleichen Server kann die Gesamtlatenz im Vergleich zum Schließen des Original-Socket und Öffnen neuer für alle Folgeanfragen.

+1

Da Darkassassin93 angegeben hat, dass die Verbindung bei out.close() auf einem Servlet aussterben wird. Wie könnten wir in diesem Fall eine persistente HTTP-Verbindung auf einem Java Tomcat-Server implementieren? Oder müssen wir Tools von Drittanbietern verwenden, um dies zu implementieren? Eine andere Frage ist, was ist mit der Client-Seite? –

+2

@Kevin, Sie haben keine Kontrolle über den Browser ("Client-Seite"): Es wird seine eigenen Richtlinien (Sie können nur hoffen, dass es unterstützt "am Leben bleiben"; die meisten tun). Re Aufruf '.close', glaube ich, dass die Verbindung schließt (das ist seine spezifische Zweck), so der Weg (hoffentlich, Browser kooperierend) NICHT die Verbindung schließen ist nicht zu rufen' schließen' - möglicherweise nicht ausreichend, aber ist sicherlich notwendig. –

1

Ich denke, das ist ein Wechsel für http oder https für Website-Browser. Wenn Sie ein altes https: // haben und Sie nun http für die .htaccess-Datei des Browsers verwenden, sollte dieses Problem über yoast plugins eine Seite crawl page erstellt werden. Mach dir keine Sorgen, es ist kein wichtiger Fehler. Für Hacker ist dies eine Möglichkeit, Ihre Website zu hacken, wenn Ihre SSL-Verbindung leer ist, sollten Sie diese Seite oder Domäne an Ihre SSL-Verbindung anschließen e.b http://www.example.com und wenn Sie https://www.example.com im Browser durchsuchen gibt es einige andere Link mit Ihrer Website-Domain zu öffnen.

Lösung dafür verwenden Sie immer Ihre vollständige Adresse für die Website: um Hacker gegen Ihre Website zu schützen verwenden Sie ssl und https:/Seite für Ihre Website.

Dann dieses Problem nie Szene in einer Testseite oder Seite.