2009-06-10 13 views
3

In unserer .NET-Webanwendung haben wir ein Sitzungsobjekt für jeden angemeldeten Benutzer, der ungefähr 5-7 Kilobyte beträgt. Die Sitzung speichert ein Dictionary-Objekt, das einige Klassen und das Authentifizierungstoken des Benutzers enthält. Ist diese Sitzungsgröße zu groß? Ich weiß wirklich nicht, was eine gute Größe ist oder welche guten Praktiken ich für Sitzungen befolgen sollte. Hat jemand von euch Ideen? DankeIst meine ASP.NET-Sitzung zu groß?

Antwort

2

Nur in der Sitzung, was absolut notwendig ist, um dort zu sein. Andernfalls können Sie es zwischenspeichern oder von einem anderen Ort abrufen, indem Sie die IDs verwenden, die Sie in der Sitzung gespeichert haben. Wenn es an einen anderen Ort gehen kann, ist es wahrscheinlich, dass es dort statt in Ihrem Sitzungsobjekt benötigt wird.

+0

stimme ich vollständig zu. – DevelopingChris

+0

Ich würde auch mit Caching vorsichtig sein. Sie können dort auf dieselben Probleme stoßen wie bei der Sitzung. – Rob

+2

Wie kann ich herausfinden, wie groß mein Sitzungsobjekt ist? – Rod

1

Der allgemeine Industriestandard ist, es auf so niedrig wie möglich zu reduzieren, die Objekte zwischenzuspeichern und die IDs in der Sitzung zu speichern, um sie bei der nächsten Anfrage abzurufen.

In asp.net im Allgemeinen gibt es Probleme mit dem Ausführen einer Multiple-Box-Anwendung und müssen Sitzung in der Datenbank speichern und dann in Objekte deserialisieren.

Wenn Sie auf diese Weise gehen, ist es mehr ein Treffer, um die Datenbank für xml zu treffen und dann deserialisieren, als den Datensatz selbst zu schlagen.

2

TheTXI und DevelopingChris haben Best Practices bereitgestellt, aber hier ist die ultimative Antwort auf Ihre Headline-Frage: Nur Sie können feststellen, ob Ihre Sitzung zu groß ist. Wenn Sie keine Probleme mit der Speichernutzung auf Ihren Webservern haben (oder mit dem Datenverkehr zwischen Webs und dem Statusserver, wenn Sie einen externen Statusserver verwenden), speichert Ihre Sitzung nicht zu viel; Wenn Sie es sind, ist es.

Best Practices können Ihnen sicherlich helfen, Probleme zu lösen, wenn Sie es sind, und die Chancen auf sie zu verringern. Aber wenn Sie nicht kaputt sind, würden Sie wahrscheinlich bessere Entwicklungsenergie für Teile des Codes ausgeben beeinflusst Ihre Benutzer oder Ihre Wartbarkeit.

1

Es hängt von Ihren Skalierbarkeitsanforderungen ab. 5-7K * 1000 gleichzeitige Sitzungen = 57 MB. Vorausgesetzt, Sie haben eine anständige Menge an RAM, sollten Sie in Ordnung sein. Das heißt, Sie sollten sehr vorsichtig sein mit dem, was in der Sitzung gespeichert wird und vermeiden, etwas zu speichern, was nicht absolut notwendig ist.

0

Nicht, wenn Sie es brauchen. Sie sollten schrittweise durchgehen und sehen, was Sie mehr zum Cache oder in die Datenbank lassen können.