Ich wurde gebeten, eine Site zu erstellen, und einer der Mitentwickler sagte mir, dass ich den Keep-Alive-Header einfügen müsste.
Nun, ich habe viel darüber gelesen und habe immer noch Fragen.
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 Anforderung eine neue Verbindung öffnen
Anschauen
- Wenn der IIS (F) sendet
keep alive
Header ( oder Benutzer sendet Keep-Alive ), bedeutet es , dass (E
,C
,B
) speichert eine Verbindung , die nur für meine Session ist? - Wo werden diese Informationen aufbewahrt ( "diese Verbindung gehört zu" Royi " )?
- Bedeutet dies, dass niemand diese Verbindung verwenden kann?
- Wenn ja - bedeutet dies, dass der 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" - "Keep" bis wann einstelle?)
ps für diejenigen, die interessiert sind:
Wenn Sie auf diese Beispielseite klicken, wird der Keep-Alive-Header zurückgegeben
http
http-headers
keep-alive
Royi Namir
quelle
quelle
Antworten:
Eine TCP-Verbindung wird anhand der Quell-IP und des Ports sowie der Ziel-IP und des Ports erkannt. Ihr Betriebssystem, alle sitzungsfähigen Zwischengeräte und das Betriebssystem des Servers erkennen die Verbindung daran.
HTTP funktioniert mit Anforderungsantwort: Der Client stellt eine Verbindung zum Server her, führt eine Anforderung aus und erhält eine Antwort. Ohne Keep-Alive wird die Verbindung zu einem HTTP-Server nach jeder Antwort geschlossen. Mit HTTP Keep-Alive halten Sie die zugrunde liegende TCP-Verbindung offen, bis bestimmte Kriterien erfüllt sind.
Dies ermöglicht mehrere Request-Response-Paare über eine einzelne TCP-Verbindung, wodurch ein Teil des relativ langsamen Verbindungsstarts von TCP entfällt.
Nein. Router müssen sich keine Sitzungen merken. Tatsächlich müssen nicht mehrere TCP-Pakete, die zu derselben TCP-Sitzung gehören, alle dieselben Router durchlaufen - das heißt, TCP muss sie verwalten. 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 vorgesehen.
Dies ist die Absicht von TCP-Verbindungen : Es handelt sich um eine End-to-End-Verbindung, die nur für diese beiden Parteien bestimmt ist.
Definieren Sie "überlappende Verbindungen". Unter HTTP-Permanent-Verbindung finden Sie einige Vor- und Nachteile, z.
Eine typische Keep-Alive-Antwort sieht folgendermaßen aus:
Siehe beispielsweise HTTP-Keep-Alive-Header ( Hypertext Transfer Protocol) (ein Entwurf für HTTP / 2, in dem der Keep-Alive-Header ausführlicher erläutert wird als 2616 und 2086 ):
Ein Host setzt den Wert des
timeout
Parameters auf die Zeit, zu der der Host zulässt, dass eine inaktive Verbindung offen bleibt, bevor sie geschlossen wird. Eine Verbindung ist inaktiv, wenn keine Daten von einem Host gesendet oder empfangen werden.Der
max
Parameter gibt die maximale Anzahl von Anforderungen an, die ein Client stellen wird oder die ein Server für die dauerhafte Verbindung zulassen kann. 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 (solange er die Antwort auf die aktuelle Anforderung zurückgibt). Wie dies implementiert wird, hängt von Ihrem HTTP-Server ab.
quelle
N
Anfragen überN
Verbindungen ausgelöst werden (da die Verbindung standardmäßig nach jeder Antwort geschlossen wird), z. B.N
Anfragen überN / M
oder sogar nurM
Verbindungen, da mehrere Anfragen ausgelöst werden können Jede geöffnete Verbindung kann also weniger verbrauchen.