Passer au contenu principal

Rester en vie

Rester en vie (mécanismes de maintenance de connexion) fait généralement référence aux connexions de communication dans un réseau qui ne sont pas terminées mais qui sont maintenues jusqu'à ce que la connexion soit interrompue par le client ou le serveur. La principale caractéristique de leur maintien en vie est l'envoi d'un message sans contenu entre un serveur et un client. Avec ce message, l'un des utilisateurs du réseau (client ou serveur) peut contrôler si la connexion sera maintenue et empêcher son annulation. Si la connexion est toujours activée, elle peut être utilisée pour l'échange de données.

De plus, les connexions persistantes sont appelées les connexions HTTP persistantes, les connexions HTTP persistantes et la réutilisation des connexions HTTP. Le protocole HTTP 1.1 prend en charge la conservation par défaut et utilise également le pipeline HTTP pour traiter les demandes par lots. HTTP 2 étend la procédure de connexions persistantes avec des options supplémentaires (par exemple, le multiplexage).

Informations générales

La communication réseau conventionnelle fonctionne selon un schéma de demande de réponse. Un client demande des données spécifiques à un serveur. Le serveur répond en reconnaissant la présence des données ou en les refusant et en émettant un code d'erreur. Une fois les données disponibles, le client en fait la demande en établissant une nouvelle connexion. Le client interprète ensuite les données et les présente. S'il n'est pas complet, des données supplémentaires sont nécessaires pour terminer la visualisation. Une nouvelle connexion est utilisée pour cela et parfois des données inutiles sont générées (surcharge). Dans le protocole HTTP 1.0, une nouvelle connexion TCP est toujours définie pour chaque requête. Cela signifie que chaque demande d'un client est traité individuellement par le serveur et, si possible, répondu individuellement.

Les sites Web se composent généralement de différentes ressources de données. Par exemple, les fichiers HTML, les scripts CSS et les scripts qui ont un impact sur les interactions des utilisateurs. De plus, des images ou des fichiers multimédias sont inclus. Simplement, HTTP 1.0 nécessite un connexion séparée pour chaque dossier, qui doit également être conclu. Cette approche est particulièrement inefficace pour les grands sites Web car l'utilisation du réseau est très élevée (congestion du réseau)[1]. Pour éviter que de nombreuses connexions individuelles ne soient établies et interrompues à nouveau, la gestion du réseau a été étendue via des connexions persistantes et des canaux HTTP. Pour le protocole HTTP 1.1, il est désormais possible d'implémenter plusieurs requêtes et réponses par connexion, avec un message keep-alive spécifique qui est envoyé entre le client et le serveur pour chaque connexion et les requêtes peuvent désormais être stockées dans le pipeline

Comment ça marche

La plupart des serveurs peuvent être configurés pour prendre en charge "Keep-Alive"[2]. Côté client, les navigateurs les plus utilisés sont déjà capables de déterminer les connexions persistantes. Il s'agit cependant d'une question de configuration côté serveur. Selon la technologie et le langage de programmation utilisés, les changements nécessaires diffèrent légèrement dans la syntaxe et la sémantique. Pour un serveur Apache, keep-alive peut être autorisé dans le fichier de configuration "httpd.conf". Trois propriétés sont particulièrement importantes:[3]

  • Rester en vie: Avec cette propriété, les valeurs d'activation et de désactivation peuvent être saisies. Pour HTTP 1.1, il s'agit de la valeur par défaut.[4]
  • MaxKeepAliveRequests: Cette propriété définit le nombre maximum de requêtes possibles par connexion. Une valeur comprise entre 50 et 100 est généralement suffisante. Cependant, cette valeur dépend de la taille du projet Web ou du nombre de fichiers dans un portail Web.
  • KeepAliveTimeout: Si le serveur ne reçoit aucune demande, il est inactif et maintient la connexion jusqu'à ce qu'elle soit annulée. La propriété timeout limite le temps pendant lequel le serveur doit attendre une nouvelle demande. Environ 10 secondes sont considérées comme idéales, mais le temps d'attente peut être plus long pour les sites Web à fort trafic.

Si les propriétés et valeurs correspondantes sont entrées dans la configuration du serveur, le serveur Apache envoie des réponses aux requêtes qui se présentent comme suit:[5].

igraal_fr-fr
~ $ curl -I https://www.domain.com/file.html HTTP / 1.1 200 OK Connexion: Keep-Alive Content-Type: text / html; charset = UTF-8 Date: jeu, 15 janvier 2015 16:45:29 GMT Content-Length: 1845 Keep-Alive: timeout = 10, max = 20 Serveur: Apache / 2.4.9 (Unix) PHP / 5.6.2

Le principe est le même pour tous les serveurs. Le client et le serveur échangent de très petits messages, appelés "keep-alive-messages". Ils permettent au client de recevoir divers fichiers au sein d'une connexion. Le message Keep Alive est transmis à l'aide de l'en-tête HTTP. Indique au client ou au serveur que la connexion doit être maintenue. Chaque demande se fait via une connexion. Une fois que l'un des participants au réseau a rompu la connexion, il n'est plus possible d'exécuter diverses demandes et réponses.

Restez en vie grâce à .HTACCESS

Si l'opérateur Web n'a pas accès à la configuration du serveur, les modifications peuvent également être effectuées dans le fichier htaccess. Le fichier .htaccess écraser la configuration du serveur Apache en enregistrant le code source suivant:

Jeu d'en-tête Connexion keep-alive

L'en-tête "Keep Alive" sera ajouté à chaque demande. Il est recommandé d'exécuter un test pour voir si le serveur implémente la modification comme vous le souhaitez. Cependant, des définitions plus précises des délais d'expiration et des demandes de pointe ne peuvent être effectuées que dans le fichier de configuration de serveur correspondant.

Pertinence pour la programmation

Les connexions persistantes sont fournies en standard dans le protocole HTTP 1.1. Le protocole HTTP 2 étendre cette norme au moyen d'un procédé de multiplexage, qui optimise encore la transmission des données. L'utilisation de ces options et dans quelle mesure dépend de l'infrastructure technique et du client. Cela signifie que les protocoles permettent différentes optimisations, mais la mise en œuvre doit parfois avoir lieu côté serveur.

Pour certains projets Web, les en-têtes Keep-alive sont spécifiquement recommandés. Ceci est valable pour les sites Web avec beaucoup de fichiers et un contenu multimédia étendu, ainsi que pour les magasins en ligne qui dépendent de connexions HTTPS. HTTPS est généralement gourmand en ressources dans la transmission de fichiers car la connexion est cryptée à l'aide de SSL (Secure Socket Layer). En ajoutant un en-tête "keep alive", la vitesse de chargement des sites Web peut être considérablement raccourcie car les latences entre les différentes connexions sont complètement évitées et il n'y a qu'une seule connexion qui permet plusieurs requêtes et réponses que le serveur peut traiter une en même temps .

Dans le même temps, étant donné que des ressources telles que la CPU (unité centrale de traitement) et la mémoire sont nécessaires pour déterminer de nouvelles connexions au niveau de la couche TCP / IP (qui est sous la couche application du protocole HTTP), la CPU peut en outre être libérée par l'en-tête keep-alive. Le PC doit configurer beaucoup moins de connexions TCP[6].

Liens web

Erreur: Attention: Contenu protégé.