VS-Sitzungs-VS-Cookies zwischenspeichern?
Was sind die do 's und don' TS über Cache-VS-Sitzung VS-Cookies?
Beispielsweise:
Ich bin mit Session-Variablen sehr viel und haben manchmal Probleme bei der Buchung-Anwendung, wenn Benutzer beginnen, Produkte zu bestellen und dann zum Mittagessen gehen, und wieder einige Stunden später und weiterhin die Buchung. Speichere ich die Buchung in die Sitzung, bis der Benutzer bestätigt oder abgebrochen, die Buchung, so brauche ich nicht zu sprechen, um die Datenbank und Griff auf halbem Weg Buchungen in der Datenbank, wenn die Benutzer klicken Sie einfach auf das X in der browser-und kommt nie wieder zurück.
Sollte ich stattdessen verwenden Sie den cache oder cookies oder eine Kombination?
(Auch wenn es einige Fehler in der app, die session-Objekt setzt sich und ich bekomme mehr Probleme, weil, dass)
Ich bin hauptsächlich desktop-Programmierung und das Gefühl mir fehlt viel wissen hier wer also so erweitern können, wo, Cache, Sitzungs-Cookies (oder db) würde geschätzt
Edit: Von den Antworten, es scheint, dass eine Kombination von DB und cookies ist es, was ich will.
- Ich haben, speichern Sie die Buchung in der Datenbank in Verbindung mit einer session-id
- Speichern der session-id in einem cookie (verschlüsselt).
- Jedem laden der Seite die überprüfung der cookie und Holen sich die Buchung aus der Datenbank
- Ich habe eine clean-up-Prozedur, die ausgeführt wird, sobald eine Woche, die löscht unfertige Buchungen.
Ich kann nicht speichern Sie die Buchung wie ein cookie, denn der Benutzer kann dann die Preise ändern und andere sensible Daten, und ich musste alles überprüfen (kann nicht Vertrauen in die Daten).
Habe, bekam ich es richtig?
Und vielen Dank für die tollen Erklärungen!
InformationsquelleAutor der Frage Stefan | 2009-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
State management ist eine entscheidende Sache zu meistern, wenn Sie kommen, um die Web-Welt aus einer desktop-Anwendung-Perspektive.
Session
wird verwendet, um zu speichern pro-Benutzer Informationen für den aktuellen Web-session auf der server. Es unterstützt die Verwendung eines Datenbank-server als back-end-Speicher.Cookie
sollte verwendet werden, zu speichern pro-Benutzer Informationen für den aktuellen Web-session oder persistent Informationen über die clientalso client hat Kontrolle über den Inhalt einer cookie.Cache
Objekt ist gemeinsam von den Benutzern in einer einzigen Anwendung. Sein Hauptzweck ist, um cache-Daten aus einem datenspeicher und sollte nicht verwendet werden, als primären Speicher. Es unterstützt automatische Invalidierung Funktionen.Application
Objekt ist geteilt zwischen der Benutzer zu speichern Anwendung-breites Zustand und sollte entsprechend genutzt werden.Wenn Ihre Anwendung verwendet wird, durch eine Reihe von nicht authentifizierten Benutzern, schlage ich vor, Sie speichern die Daten in einem cookie. Wenn es eine Authentifizierung erfordert, können Sie entweder speichern der Daten in der DB manuell ein oder verwenden ASP.NET Profil-management-Funktionen.
InformationsquelleAutor der Antwort Mehrdad Afshari
Web ist ein von der Natur getrenntes Modell ist und keine der vorgenannten Optionen (Session, Application, Cache, ...) zuverlässig genug. Session timeout, den Arbeitsprozess recycelt, etc.
Wenn Sie wirklich brauchen, um zu speichern der Benutzer den Fortschritt, zuverlässig und über längere Zeiträume, die Datenbank ist Ihre einzige Lösung. Wenn Sie Benutzer profile (wenn die Benutzer sich anmelden müssen), dann ist es einfach. Wenn nicht, generiert eine eindeutige Id, speichern Sie Sie in der cookie (oder URL) und verfolgen Sie den Benutzer basierend auf dieser Identifikation.
Nur sicherstellen, dass die Id wird verschlüsselt und dann base64-kodierten string und nicht nur ein numerischer Wert.
EDIT:
Nach deiner zusätzlichen Erklärung in der ursprünglichen Frage und Kommentar von Mehrdad Afshari, gute Lösung für dich wäre die Verwendung von Session-aber die Speicherung auf Sql-Server anstelle von InProc.
Hier gibt ' s mehr details und eine Anleitung, wie es eingerichtet: http://msdn.microsoft.com/en-us/library/ms178586.aspx
Im Hinterkopf haben, dass Sie immer NOCH die session-timeouts, aber Sie wird überleben application pool recycelt, auch server neu gestartet.
Wenn Sie wirklich brauchen, eine dauerhafte Speicherung, benutzerdefinierte Lösung mit der Datenbank, wie ich es ursprünglich beschrieben, ist die einzige Lösung.
InformationsquelleAutor der Antwort muerte
Sollten Sie nicht verwenden die Cache-Objekt zum Zwischenspeichern von session-Daten, der cache ist geteilt zwischen allen Benutzern. Stattdessen könnte man verwenden Asp.Net Profil-Eigenschaften um Ihre Daten zu speichern, oder fügen Sie einen Ereignishandler für das Session_End-Ereignis und speichern von Daten, wenn der Benutzer den computer verlässt, zu lange.
InformationsquelleAutor der Antwort Rune Grimstad
Session auf dem server gespeichert ist, wird die Zeit standardmäßig in 20 Minuten (Das ist einstellbar). Ich würde speichern Sie diese in ein cookie, oder in viewstate(wenn verfügbar), um zu verhindern, dass der timeout.
Wenn Ihr Zustand wird gespeichert InProc(Standard-setup), dann mehr als einen server in eine farm zu führen, dass Sie auch Fragen, es sei denn, Sie haben implementiert eine Art "sticky-Sitzung", die halten die Nutzer auf dem gleichen server in der farm für die nächsten Gespräche.
Versuche ich zu vermeiden-Sitzung, wenn möglich(setzt extra-load und memory-Auslastung auf dem server), und halten Sie die viewstate ausschalten, wenn möglich, halten Sie die Größe der Seite niedrig. Cookies werden oft die leichteste option, aber Ihre Benutzer möglicherweise haben diese deaktiviert, und Sie müssen einen fallback-Modus, noch erlaubt es Ihnen, die Website zu verwenden.
Bearbeiten (hinzufügen Klärung basierend auf der Antwort vom Fragesteller):
Viewstate gespeichert ist, in ein "verstecktes Feld", und ist eine serialisierte Darstellung aller Objekte in Viewstate-Speicher. Viewstate wird automatisch zum speichern der Seite Stand, aber Sie können diese explizit hinzufügen, und rufen Sie Ihre eigenen Objekte zu und von Viewstate-programmgesteuert, wenn Sie zu wählen.
Also ja, Datensätze können gespeichert werden, in Viewstate.
InformationsquelleAutor der Antwort Chris Ballance
Erste, was Sie wissen müssen! cookies werden von Sitzung! Der server weiß, wer Ihre Nutzer Dank cookie, die ausgetauscht werden zwischen dem client und dem server für jede Anfrage (dies funktioniert mit HTTP-Header set-cookie und cookie).
Die eigentliche Frage ist:
Dann überlegen, wo Sie wollen speichern Sie Ihre Sitzung auf:
Wenn Sie Ihre Website, müssen eine hohe Verfügbarkeit und eine hohe performance, dann müssen Sie nicht speichern session, die innerhalb des Prozesses, sondern in einer Datenbank. Auf diese Weise werden Sie in der Lage teilen sich die Arbeit auf mehrere web-server.
Aber Sie verlieren in der Einfachheit (weil Objekte, die Sie speichern in Ihrer Sitzung müssen serialisierbar sein), und Sie haben noch eine weitere Runde Reise zwischen Ihrem webserver und dem Datenbankserver.
InformationsquelleAutor der Antwort Nicolas Dorier
Cookies sind gespeichert im browser als text-Datei-format.Es ist gespeichert Grenzbetrag von Daten.Es ist nur so dass 4kb[4096bytes].Es ist nicht festhalten, die mehrere Variablen in cookies.
können wir den Zugriff auf die cookies, die Werte in leicht.So ist es weniger sicher.Die setcookie() Funktion erscheinen müssen VOR dem tag.
Sitzungen sind gespeichert in der server-Seite.Es ist gespeichert unendlich Menge von Daten.Es hält mehrere Variablen in sessions. wir können den Zugriff auf die cookies, die Werte in leicht.So ist es sicherer.
Links: cache-vs-Sitzung-vs-cookies
InformationsquelleAutor der Antwort Elangovan
Cookie ist ein Stück der geteilten Informationen zwischen kooperierenden Teile der software, durch die Speicherung von client-spezifischen Informationen auf dem client-Rechner und später wieder abrufen der Statusinformationen.
wählte den Begriff "cookie" als "ein cookie ist eine bekannte computer-Wissenschaft-Begriff, der verwendet bei der Beschreibung von einem undurchsichtigen Stück von Daten, die von einem Vermittler". Der Begriff Opak hier impliziert, dass der Inhalt von Interesse und Relevanz nur der server und nicht der client. Der browser automatisch das cookie in allen seinen nachfolgenden Anforderungen an den host-Ursprung der cookie. Ein cookie hat einen Namen und einen Wert, und andere attribute wie domain und Pfad, Ablaufdatum, Versionsnummer, und Kommentare. für mehr
Cookie-Version:
Server-Seite Sitzung Daten speichern können große Daten-und eine client-Seite cookie Daten sind in der Größe begrenzt von einer website gesendet, um server, die cookies in der Regel enthält die Referenz-code, indem Sie diese speichern Daten-transfer-Größe. Sitzung wird beendet, sobald der browser geschlossen wird, aber cookies gibt es mehr. Der Browser sendet einen session-ID an den server als URL-Parameter, cookie oder auch HTTP-Header.
Cache ist eine hardware-oder software-Komponente, die Daten speichert, so dass zukünftige Anfragen für diese Daten schneller bearbeitet werden kann; die Daten in einem cache gespeichert, könnte das Ergebnis einer früheren Berechnung, oder das duplizieren von Daten an anderer Stelle gespeichert.
InformationsquelleAutor der Antwort Premraj