Wie viele Daten können / sollten Sie speichern in einem Sitzungsobjekt Benutzer?

StackOverflow https://stackoverflow.com/questions/73008

  •  09-06-2019
  •  | 
  •  

Frage

Wir haben mehrere Zaubererartschnittstelle Formularanwendungen auf unserer Website, wo wir Informationen vom Benutzer auf jeder Seite erfassen und dann zu einem Backend-Prozess senden Sie einen Web-Service.

Leider können wir die Informationen in Brocken während jeder Form Vorlage nicht vorlegen, so dass wir es die Benutzer-Session bis zum Ende des Prozesses speichern haben und sie alle zur gleichen Zeit vorlegen.

Ist die Menge an Serverspeicher / SQL Server-Speicherplatz die einzige Einschränkung, wie viel ich in Benutzer-Sessions speichern kann, oder gibt es etwas anderes, muss ich prüfen?

Edit:. Die Site auf ASP.NET Web-Formulare erstellt wird

War es hilfreich?

Lösung

, um die Information Unter der Annahme ist nicht empfindlich, dann können Sie die Informationen in einem Cookie gespeichert werden, das die Menge an Informationen, reduzieren würde benötigt, um Server-Seite gespeichert werden. Dies würde auch ermöglichen es Ihnen, die Informationen über JavaScript zugreifen.

Alternativ können Sie den Ansichtszustand verwenden, um die Informationen zu speichern, obwohl dies zu großen Datenmengen führen kann, die zwischen dem Server und dem Client und nicht meiner bevorzugten Lösung gesendet.

Die Höhe der Sitzungsinformationen sollten Sie wild abhängig von der Anwendung speichern variiert, die Anzahl der erwarteten Benutzer, Server-Spezifikation usw. Um eine genauere Antwort gibt weitere Informationen benötigen:)

Schließlich davon aus, dass die Informationen während des gesamten Prozesses gesammelt nicht von Seite zu Seite erforderlich sind, dann können Sie alle Daten in einer Datenbanktabelle speichern und speichern nur die Datensätze eindeutige ID in der Sitzung. Da jede Seite der db Datensatz vorgelegt wird aktualisiert und dann auf der letzten Seite alle Informationen abgerufen und vorgelegt. Dies ist nicht eine Idee Lösung, wenn Sie brauchen aufgrund der großen Anzahl von db auf jede weitere Seite vorherige Informationen abzurufen liest erforderlich.

Andere Tipps

Sie auch 1 asp-Seite mit der gesamten HTML-Form haben könnte, und verstecken Teile davon, bis der Benutzer füllen und „trägt“ der sichtbare Teil ...

dann einfach den Teil auszublenden, die gefüllt ist und zeigen den nächsten Teil der Form ...

Dies wäre extrem einfach in dem .NET-Framework, verwenden Panels für jeden „Wizard Schritt“, und fügen Sie loggic wenn anzuzeigen und jedes Panel zu verstecken.

Sie werden dann alle Daten auf einer Seite haben.

Wenn Sie ein traditionellen HTTP-Modell verwenden (dh nicht verwenden runat = „server“) können Sie die Daten an einem anderen ASP-Seite veröffentlichen können und die gebuchten Daten in versteckten Formularelemente platzieren, können Sie dies tun, denn so viele Seiten so müssen vermieden werden etwas in einer Sitzungsvariablen platzieren.

Da es aus Performance-Sicht problematisch ist, große Mengen von Daten in Benutzer Session-Objekt zu speichern, bietet ASP.Net einige andere Abhilfen auf, was in den Pfosten oben erwähnt wird. ASP.NET-Profil Provider sitzungsbezogene Daten in einem fortbestehen kann Datenbank. Sie können auch verwenden, Session State Server die einen separaten Server verwendet zu speichern alle Sitzungsinformationen. Beide Situationen berücksichtigen, wenn Sie verwenden müssen, um Cluster oder Loadbalancer können die Server noch die Sitzungsinformationen auf verschiedene Server erkennen. Wenn Sie Informationen in dem Http Session-Objekt speichern, führen Sie in das Problem, dass ein Benutzer immer auf den gleichen Server für diese Sitzung gehen.

Session, Ansichtszustand, Datenbank. Diese sind alle langsam, aber wird den Job zu erledigen.

Versteckte Formularfelder ist die Antwort, die ich am besten gefällt.

Es gibt auch andere Möglichkeiten, um Staat zu fortbestehen. Cookies, Popup-Fenster, Frameset oder iframes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top