2009-03-10 9 views
1

Le délai d'attente de session dans les applications Web indique généralement le délai d'inactivité, c'est-à-dire la période pendant laquelle l'utilisateur ne travaille pas avec l'application.Expiration de la session dans les applications Web

Maintenant, que se passe-t-il s'il existe un script automatisé écrit qui envoie une requête toutes les 5 minutes - la session de cet utilisateur ne se poursuit-elle pas indéfiniment? Ceci étant le cas, cette approche ne va-t-elle pas charger lourdement l'application affectant sa performance à long terme?

Répondre

0

Eh bien ... Je suppose que "cela dépend" La première question que vous devriez vous poser est de savoir si vous avez même besoin de session.

Si vous avez un processus automatisé, je suppose que vous n'avez pas vraiment besoin d'utiliser la session.

Dans ce cas, éteignez-le ou ne vous inquiétez pas.

4

L'exécution d'un appel automatisé sur le serveur, par exemple via une requête AJAX, maintiendra la session active. Typiquement c'est le point cependant. Un effet secondaire intéressant de ceci est que si la demande se produit de façon prévisible et régulière, vous pouvez l'utiliser comme un "ping" pour déterminer si le navigateur de l'utilisateur est toujours ouvert. Si un ou deux pings sont manqués, vous pouvez fermer la session plus tôt et libérer des ressources plus rapidement que si vous laissez simplement la session expirer.

0

Je suppose que votre table de session serait un peu plus grande, mais d'un autre côté, vous n'allez pas démolir et recréer la session. Je ne vois pas comment cela pourrait "charger lourdement" l'application. Je suppose que cela dépend de l'application elle-même et de la quantité de mémoire utilisée pour maintenir l'état de la session.

1

Oui, et Oui. C'est pourquoi si vous allez écrire une application pour le web, vous voulez vraiment trouver un moyen de l'implémenter sans utiliser les sessions côté serveur. Habituellement, vous serez en mesure de trouver des façons d'implémenter la même fonctionnalité à l'aide de cookies - alors les données de session sont côté client, donc qui se soucie de rester actif en permanence.

0

Il permettrait à la session de l'utilisation de continuer indéfiniment, tant qu'ils ont leur navigateur ouvert. Si vous souhaitez conserver une session active pendant une période prolongée, vous pouvez également suivre les sessions via la base de données et non en mémoire. De plus, si la session ouverte indéfinie vous inquiète, vous pouvez implémenter un délai d'expiration à partir de l'ouverture de la session et en cas d'inactivité prolongée.

1

J'ai fait quelque chose de similaire pour une application qui dépend fortement des données de session. Ce que j'ai fait a été mis le délai d'attente IIS à un nombre relativement faible, disons 10 minutes, puis avoir un appel AJAX chronométré qui pings une page vierge toutes les 5 minutes.

Cette surcharge est en fait assez faible, car tout ce que vous faites est de demander une page vierge, et si une personne ferme son navigateur, la session se termine dans 10 minutes.

1

Vous voulez garder la session aussi petite que possible. Cela dit, si tout le monde commence à le faire, bien sûr, il va charger votre application, avec (out) session. Si vous pensez que vos utilisateurs sont obligés de le faire, réfléchissez à la raison pour laquelle votre application manque d'une fonctionnalité importante ou les force à faire quelque chose. Maintenant, indépendamment de cela, si vous attendez que beaucoup d'utilisateurs soient actifs en même temps, tant qu'un seul serveur ne le fera pas, vous finirez par avoir une session hors processus.Si la session est dans Sql Server, il s'agit simplement de données sauvegardées, dans ce cas nous ne parlerons pas d'utilisation de la mémoire.

Questions connexes