webentwicklung-frage-antwort-db.com.de

Keep-Alive-Header-Klärung

Ich wurde gebeten, eine Site zu erstellen, und einer der Mitentwickler teilte mir mit, dass ich den Keep-Alive-Header einfügen müsse.

Nun, ich habe viel darüber gelesen und immer noch Fragen.

msdn ->

Die offene Verbindung verbessert die Leistung, wenn ein Client mehrere Anforderungen für Webseiteninhalte stellt, da der Server den Inhalt für jede Anforderung schneller zurückgeben kann. Andernfalls muss der Server für jede Anfrage eine neue Verbindung herstellen

Anschauen

enter image description here

  • Wenn der IIS (F) keep alive - Header sendet ( oder der Benutzer Keep-Alive sendet ), Bedeutet dies, dass (E, C, B) eine Verbindung speichert, die nur für meine Sitzung bestimmt ist?
  • Wo wird diese Information aufbewahrt ( "diese Verbindung gehört zu" Royi ")?
  • Bedeutet das, dass niemand diese Verbindung nutzen kann?
  • Wenn ja - bedeutet dies, dass Keep Alive-Header - die Anzahl der überlappenden Verbindungsbenutzer verringert?
  • wenn ja, wie lange wird die Verbindung für mich gespeichert? (Mit anderen Worten, wenn ich "keep alive" setze - "keep" bis wann?)

p.s. Für Interessierte:

durch Klicken auf auf diese Beispielseite wird der Keep Alive-Header zurückgegeben

103
Royi Namir

Wo werden diese Informationen aufbewahrt ("Diese Verbindung besteht zwischen Computer A und Server F")?

Eine TCP -Verbindung wird anhand der Quell-IP und des Ports sowie der Ziel-IP und des Ports erkannt. Ihr Betriebssystem, alle Geräte mit Sitzungsunterstützung und das Betriebssystem des Servers erkennen die Verbindung daran.

HTTP arbeitet mit Request-Response: Der Client stellt eine Verbindung zum Server her, führt eine Anfrage aus und erhält eine Antwort. Ohne Keep-Alive wird die Verbindung zu einem HTTP-Server nach jeder Antwort geschlossen. Mit HTTP Keep-Alive behalten Sie die zugrunde liegende TCP) - Verbindung offen, bis bestimmte Kriterien erfüllt sind.

Dies ermöglicht mehrere Request-Response-Paare über eine einzige TCP) - Verbindung, wodurch ein Teil des relativ langsamen TCP-Verbindungsstarts entfällt.

Wenn der IIS (F) Keepalive-Header sendet (oder der Benutzer Keepalive-Header sendet), bedeutet dies, dass (E, C, B) eine Verbindung speichert

Router müssen sich keine Sitzungen merken. In der Tat müssen mehrere TCP - Pakete, die zu derselben TCP - Sitzung gehören, nicht alle dieselben Router durchlaufen - das ist für TCP Router wählen einfach den besten IP-Pfad und leiten Pakete weiter. Keep-Alive ist nur für Client-, Server- und andere sitzungsbewusste Zwischengeräte möglich.

was ist nur für meine Sitzung?

Bedeutet das, dass niemand diese Verbindung nutzen kann?

Das ist die Absicht von TCP Verbindungen : Es ist eine End-to-End-Verbindung, die nur für diese beiden Parteien bestimmt ist.

Wenn ja - bedeutet dies, dass Keep Alive-Header - die Anzahl der überlappenden Verbindungsbenutzer verringert?

Definieren Sie "überlappende Verbindungen". Unter HTTP persistent connection finden Sie einige Vor- und Nachteile, z. B .:

  • Niedrigere CPU- und Speichernutzung (da weniger Verbindungen gleichzeitig geöffnet sind).
  • Aktiviert das HTTP-Pipelining von Anforderungen und Antworten.
  • Reduzierte Netzwerküberlastung (weniger TCP Verbindungen).
  • Reduzierte Latenz bei nachfolgenden Anfragen (kein Handshake).

wenn ja, wie lange wird die Verbindung für mich gespeichert? (Mit anderen Worten, wenn ich "keep alive" setze - "keep" bis wann?)

Eine typische Keep-Alive-Antwort sieht folgendermaßen aus:

Keep-Alive: timeout=15, max=100

Siehe HTTP-Keep-Alive-Header (Hypertext Transfer Protocol) (ein Entwurf für HTTP/2, in dem der Keep-Alive-Header ausführlicher erklärt wird als beide 2616 und - 2086 ):

  • Ein Host setzt den Wert des Parameters timeout auf die Zeit, zu der der Host zulässt, dass eine inaktive Verbindung offen bleibt, bevor sie geschlossen wird. Eine Verbindung ist inaktiv, wenn von einem Host keine Daten gesendet oder empfangen werden.

  • Der Parameter max gibt die maximale Anzahl von Anforderungen an, die ein Client stellt oder die ein Server für die dauerhafte Verbindung zulässt. Sobald die angegebene Anzahl von Anforderungen und Antworten gesendet wurde, kann der Host, der den Parameter enthält, die Verbindung schließen.

Es steht dem Server jedoch frei, die Verbindung nach einer beliebigen Zeit oder Anzahl von Anforderungen zu schließen (sofern er die Antwort auf die aktuelle Anforderung zurückgibt). Wie dies implementiert wird, hängt von Ihrem HTTP-Server ab.

141
CodeCaster