21 votes

Pourquoi est-ce une mauvaise idée d'utiliser la session pour stocker l'état des sites Web à fort trafic ?

Je regarde les vidéos d'apprentissage ASP.NET sur asp.net/learn. Dans ce tutoriel, ils construisent un moteur de quiz. À un moment donné, le narrateur explique que nous allons utiliser l'objet Session pour maintenir l'état entre chaque page (chaque page contient une question et quatre réponses). Il dit que "comme il s'agit d'un site Web à faible trafic", il est normal d'utiliser Session et qu'il n'a pas le temps de mettre en œuvre une méthode plus sophistiquée.

Je me demande simplement à quelle(s) méthode(s) alternative(s) il fait allusion ? Et pourquoi la session est-elle un mauvais choix pour un site web à fort trafic ?

19voto

Jason Coyne Points 3593

Stockage des données dans une base de données, ou dans des cookies, ou toute autre méthode qui ne mobilise pas directement la mémoire du serveur web.

Outre la charge, la session pose également des problèmes en ce qui concerne l'utilisation des fermes, car il faudrait soit synchroniser la session à travers la ferme, soit rendre les sessions collantes, ce qui peut avoir un impact sur l'évolutivité.

6voto

eKek0 Points 9861

Pour des alternatives, vous pouvez lire l'article Neuf options pour gérer l'état persistant de l'utilisateur dans votre application ASP.NET .

Dans les articles, l'auteur explique les avantages et les inconvénients de chaque méthode.

Extrait du résumé :

ASP.NET offre de nombreuses possibilités de conserver les données entre les requêtes des utilisateurs. Vous pouvez utiliser l'objet Application, les cookies, les champs cachés, les objets Session ou Cache, et bien d'autres méthodes. méthodes. Décider quand utiliser chacun des objets peut parfois s'avérer difficile. Cet cet article introduira les techniques susmentionnées et présente les quelques lignes directrices sur le moment de les utiliser. Bien que nombre de ces techniques existent dans l'ASP classique, les meilleures pratiques pour savoir quand les utiliser ont changé avec l'introduction l'introduction de la technologie .NET Framework. Pour conserver les données en ASP.NET, vous devrez adapter ce que vous avez appris précédemment sur la gestion de l'état en ASP.

4voto

Adam Pope Points 2454

Les données de session sont stockées dans la mémoire vive du serveur. Si vous avez un site à fort trafic, cette mémoire sera rapidement saturée et la dernière chose que vous souhaitez, c'est que ces données soient transférées sur le disque.

Comme le dit gaijin42, les biscuits ou une DB sont l'alternative.

4voto

Harper Shelby Points 13395

La session en tant que méthode de stockage d'état est difficile à utiliser dans les systèmes à fort trafic pour plusieurs raisons.

Premièrement, la méthode de stockage des sessions par défaut est in-process, ce qui signifie que si vous disposez d'une ferme web à charge équilibrée, vous "perdrez" constamment des informations sur les sessions lorsqu'un utilisateur recevra des pages servies par différents serveurs.

Le serveur de session in-proc meurt également lorsqu'un pool d'applications est recyclé, ce qui arrive plus souvent sur les serveurs à fort trafic.

Les options d'extensibilité pour les données de session sont les suivantes

  1. Utilisez le logiciel gratuit ASP.NET disponible gratuitement, et faites pointer tous vos applications vers lui
  2. Utiliser le serveur SQL pour stocker les données de la session.

En raison de la nature des données de session en général, aucune de ces deux solutions n'est une très bonne option pour un site à très fort trafic (à moins que vous ne disposiez d'un budget illimité pour acheter du matériel).

2voto

Erick Points 2430

Pour les sites web à fort trafic, vous pouvez envisager Memcached. Il s'agit d'un mécanisme de mise en cache qui est stocké dans la mémoire vive d'un ordinateur distant. Récemment, un portage win32 a été réalisé pour cette bibliothèque (qui n'était auparavant possible qu'avec linux).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X