2010-11-18 4 views
0

je travaille sur un site Web pour mon travail uni, et il doit permettre un accès de connexion pour les utilisateurs différents. Mon tuteur m'a dit que je devrais utiliser une variable de session/tableau pour stocker toutes les données d'utilisateurs telles que le prénom, l'adresse etc.variables de session vs base de données

Dans mon design j'ai juste l'userID et l'email address (l'email est utilisé pour se connecter) puis fonctionne pour obtenir les données de la base de données selon les besoins. Il dit que cela ralentirait le site car je fais beaucoup de connexions à la base de données.

Dois-je stocker toutes les données variables de session ou se connecter à la base de données pour accéder à ces données?

Merci pour tout conseil :).

Répondre

3

Vous pouvez obtenir les informations de la base de données lors de leur première connexion, puis les conserver dans les variables de session jusqu'à ce qu'elles se déconnectent ou que la session expire. Conserver un grand nombre de données utilisateur dans les variables de session peut créer une surcharge si plusieurs utilisateurs sont connectés en même temps, mais ce sera différent de faire des requêtes constantes. La meilleure façon de répondre est peut-être de demander combien d'autres données existent pour les utilisateurs et quelle quantité de données est susceptible d'être nécessaire dans une session "typique". Les données que la plupart des utilisateurs devront charger à un moment donné au cours d'une session pourraient être chargées à la connexion. Les données dont la plupart des utilisateurs n'ont pas besoin pendant une session typique peuvent être chargées à la demande.

+0

Le surcoût n'est pas si grand, comme c'est juste une requête pour obtenir tout le profil de l'utilisateur et on peut s'attendre, que vous avez besoin de la connexion plus tard à la demande de toute façon. Je ne pense pas, cela fait une si grande différence. – KingCrunch

+0

Merci, je ne ferais pas des requêtes constantes à la base de données, seulement sur certaines pages. Tels que s'ils veulent voir les informations stockées à leur sujet. Non chaque page nécessite un accès à la base de données, mais chaque fois que je vérifie que l'utilisateur est connecté, je vérifie cela via des sessions et la base de données, est-ce exact? – Elliott

+0

+1 pour les informations persistantes dans la base de données, mais utilisez des valeurs locales pour les performances. – Randy

0

La réponse dépend de la façon dont « monde réel » que vous voulez obtenir avec votre solution. Dans un site à fort trafic réel qui serait équilibré sur plusieurs serveurs, les données seraient stockées dans une base de données puis mises en cache pendant un certain temps en utilisant quelque chose comme memcache lors de l'extraction de la base de données. Si vous n'avez pas besoin d'être emporté, la mise en cache dans la session est parfaitement acceptable.

Questions connexes