On m'a demandé de créer un site, et l'un des co-développeurs m'a dit que je devrais inclure l'en-tête keep-alive.
Eh bien, j'ai lu beaucoup à ce sujet et j'ai encore des questions.
La connexion ouverte améliore les performances lorsqu'un client effectue plusieurs demandes de contenu de page Web, car le serveur peut renvoyer le contenu de chaque demande plus rapidement. Sinon, le serveur doit ouvrir une nouvelle connexion pour chaque demande
Regarder
- Lorsque IIS (F) envoie en-
keep alive
tête ( ou l' utilisateur envoie keep-alive ), cela signifie que (E
,C
,B
) enregistrer une connexion qui est seulement pour ma session? - Où ces informations sont-elles conservées ( "cette connexion appartient à" Royi " )?
- Cela signifie-t-il que personne d'autre ne peut utiliser cette connexion
- Si tel est le cas - cela signifie-t-il que Keep Alive-header - réduit le nombre d'utilisateurs de connexion superposés?
- dans l'affirmative, pendant combien de temps la connexion m'est-elle enregistrée? (en d'autres termes, si je mets en vie - "garder" jusqu'à quand?)
ps pour ceux qui sont intéressés:
cliquer sur cette page d'exemple renverra l'en-tête Keep Alive
http
http-headers
keep-alive
Royi Namir
la source
la source
Réponses:
Une connexion TCP est reconnue par l'IP source et le port et l'IP et le port de destination. Votre système d'exploitation, tous les périphériques intermédiaires prenant en charge les sessions et le système d'exploitation du serveur reconnaîtront la connexion de cette manière.
HTTP fonctionne avec demande-réponse: le client se connecte au serveur, effectue une demande et obtient une réponse. Sans keep-alive, la connexion à un serveur HTTP est fermée après chaque réponse. Avec HTTP keep-alive, vous gardez la connexion TCP sous-jacente ouverte jusqu'à ce que certains critères soient remplis.
Cela permet plusieurs paires demande-réponse sur une seule connexion TCP, éliminant une partie du démarrage de connexion relativement lent de TCP.
Non. Les routeurs n'ont pas besoin de se souvenir des sessions. En fait, plusieurs paquets TCP appartenant à la même session TCP ne doivent pas tous passer par les mêmes routeurs - c'est à TCP à gérer. Les routeurs choisissent simplement le meilleur chemin IP et transfèrent les paquets. Keep-alive est uniquement pour le client, le serveur et tout autre périphérique intermédiaire prenant en charge les sessions.
C'est l' intention des connexions TCP : c'est une connexion de bout en bout destinée uniquement à ces deux parties.
Définissez «connexions superposées». Voir Connexion persistante HTTP pour certains avantages et inconvénients, tels que:
Une réponse typique de keep-alive ressemble à ceci:
Voir l'en -tête Keep-Alive du protocole HTTP (Hypertext Transfer Protocol) par exemple (un brouillon pour HTTP / 2 où l'en-tête keep-alive est expliqué plus en détail que 2616 et 2086 ):
Un hôte définit la valeur du
timeout
paramètre sur la durée pendant laquelle l'hôte permettra à une connexion inactive de rester ouverte avant qu'elle ne soit fermée. Une connexion est inactive si aucune donnée n'est envoyée ou reçue par un hôte.Le
max
paramètre indique le nombre maximum de requêtes qu'un client fera ou qu'un serveur autorisera à effectuer sur la connexion persistante. Une fois que le nombre spécifié de demandes et de réponses a été envoyé, l'hôte qui a inclus le paramètre peut fermer la connexion.Cependant, le serveur est libre de fermer la connexion après un temps ou un nombre de requêtes arbitraires (du moment qu'il renvoie la réponse à la requête en cours). La manière dont cela est implémenté dépend de votre serveur HTTP.
la source
N
demandes sur lesN
connexions (car par défaut, la connexion se ferme après chaque réponse), par exemple, déclencher desN
demandes surN / M
ou même simplement desM
connexions, car il peut déclencher plusieurs demandes sur chaque connexion ouverte, donc peut utiliser moins.