2009-03-10 12 views
1

Das Sitzungstimeout in Webanwendungen bezeichnet normalerweise die Leerlaufzeit - d. H. Den Zeitraum, in dem der Benutzer nicht mit der Anwendung arbeitet.Sitzungstimeout in Webanwendungen

Nun, was ist, wenn ein automatisiertes Skript geschrieben wird, das alle fünf Minuten eine Anfrage sendet - würde die Sitzung des Benutzers nicht endlos weitergehen? Ist dies nicht der Fall, wird dieser Ansatz die Anwendung nicht stark belasten und sich langfristig auf seine Leistung auswirken?

Antwort

0

Nun ... ich schätze "es hängt ab" Die erste Frage, die Sie sich stellen sollten, ist, ob Sie überhaupt eine Sitzung brauchen.

Wenn Sie einen automatisierten Prozess haben, ist meine Vermutung, dass Sie nicht wirklich Sitzung verwenden müssen.

In diesem Fall schalten Sie entweder aus oder sorgen Sie sich nicht darum.

4

Führen Sie einen automatischen Anruf zum Server, sagen über eine AJAX-Anfrage, wird die Sitzung am Leben erhalten. In der Regel ist das aber der Punkt. Ein interessanter Nebeneffekt davon ist, dass, wenn die Anfrage vorhersehbar und regelmäßig abläuft, Sie sie als "Ping" verwenden können, um festzustellen, ob der Browser des Benutzers noch geöffnet ist. Wenn ein oder zwei Pings verpasst werden, können Sie die Sitzung früher schließen und Ressourcen schneller freigeben, als wenn Sie die Sitzung einfach aussetzen.

0

Ich denke, Ihre Sitzung Tabelle wäre ein wenig größer, aber auf der anderen Seite werden Sie nicht reißen und die Sitzung neu erstellen. Ich sehe nicht, wie dies die Anwendung "stark belasten" würde. Ich nehme an, dass es von der Anwendung selbst abhängen würde und wie viel Speicher verwendet wird, um den Sitzungszustand aufrechtzuerhalten.

1

Ja, und ja.

Deshalb, wenn Sie eine Anwendung für das Web schreiben, möchten Sie wirklich eine Möglichkeit finden, es zu implementieren, ohne serverseitige Sitzungen zu verwenden. In der Regel werden Sie Möglichkeiten finden, die gleiche Funktionalität mit Cookies zu implementieren - dann sind die Sitzungsdaten clientseitig, also wen interessiert es, wenn sie dauerhaft aktiv bleiben?

0

Es würde ermöglichen, dass die Sitzung endlos weitergeht, solange sie ihren Browser geöffnet haben. Wenn Sie eine Sitzung für längere Zeit am Leben erhalten möchten, können Sie die Sitzungen auch über die Datenbank und nicht im Speicher verfolgen.

Wenn Sie sich außerdem Sorgen über die unbefristete offene Sitzung machen, können Sie eine Zeitüberschreitung beim Öffnen der Sitzung und bei einer längeren Leerlaufzeit implementieren.

1

Ich habe etwas ähnliches für eine Anwendung, die stark auf Sitzungsdaten beruht.

Was ich getan habe, war das IIS-Timeout auf eine relativ niedrige Zahl, sagen wir 10 Minuten, dann haben Sie einen zeitlich festgelegten AJAX-Anruf, der alle 5 Minuten eine leere Seite pingt.

Dieser Aufwand ist ziemlich niedrig, da Sie nur eine leere Seite anfordern und wenn eine Person ihren Browser schließt, endet die Sitzung in 10 Minuten.

1

Sie möchten die Sitzung so klein wie möglich halten. Das heißt, wenn jeder damit anfängt, wird natürlich Ihre Anwendung mit (Out) Session geladen. Wenn Sie denken, dass Ihre Benutzer dazu gezwungen sind, sollten Sie sich überlegen, warum Ihre Anwendung entweder eine wichtige Funktion vermisst oder sie dazu zwingt.

Nun, unabhängig davon, wenn Sie erwarten, dass viele Benutzer zur gleichen Zeit aktiv sind, so viel, als ein einzelner Server nicht tun würde, dann würden Sie am Ende die Sitzung aus dem Prozess haben.Wenn sich die Sitzung im Sql-Server befindet, handelt es sich nur um gespeicherte Daten. In diesem Fall würden wir nicht über die Speichernutzung sprechen.

Verwandte Themen