Ich bin ein wenig verwirrt darüber, wie ich vorgehen soll. Ich arbeite an einem Design des Einkaufswagens und muss den Einkaufswagens entweder in einer Sitzung oder in einer Datenbank speichern, bin mir aber nicht sicher, welcher Ansatz der beste ist
- Benutzer ist nicht angemeldet und legt ein Produkt in den Warenkorb (Anonymer Benutzer)
- Der Benutzer ist angemeldet und legt ein Produkt in den Warenkorb.
Der erste Fall ist für mich verwirrender, da es viele Fälle geben kann, in denen der Benutzer nur den Webshop besucht und Produkte hinzufügt, ohne sich anzumelden, und es durchaus möglich ist, dass er nicht zur Kasse geht.
Aber wir müssen noch einen Warenkorb für diesen Benutzer erstellen, um einen Warenkorb zu erstellen und zu speichern, habe ich zwei Möglichkeiten.
- Wenn ein Benutzer ein Produkt hinzufügt, erstellen Sie einen Warenkorb in der Datenbank und ordnen Sie diesen Warenkorb diesem Benutzer zu, sobald er angemeldet ist. Verschieben Sie diesen Warenkorb zu dem angemeldeten Benutzer.
- Einkaufswagen erstellen, Produkt hinzufügen und in der Sitzung speichern, wenn der Benutzer angemeldet ist. Einkaufswagen in der Datenbank erstellen und den angemeldeten Benutzer mit diesem Einkaufswagen mit Benutzer verknüpfen.
Ich weiß, dass sowohl das datenbankgesteuerte Cart-System als auch das sitzungsbasierte sowohl positive als auch negative Aspekte haben können, aber nicht sicher sind, welcher Ansatz unter Berücksichtigung der folgenden Punkte der beste ist
- Skalierbarkeit
- Flexibilität
- Erweiterbarkeit
- Anwendung Sollte auf Schnelligkeit achten
Suchen Sie nach Informationen zu diesem Aspekt, um den Pfad zu bestimmen.
quelle
Antworten:
Ich würde mich für eine Lösung entscheiden, bei der allen Besuchern beim ersten Aufrufen der Website eine eindeutige ID zugewiesen wird. Es ist egal, ob sie anonym oder authentifiziert sind. Wenn sich anonyme Benutzer registrieren, behalten Sie die eindeutige ID bei.
Speichern Sie den Einkaufswagen in der Datenbank. Speicher ist billig und es sollte kein Problem sein, hin und wieder eine Abfrage nach dem Warenkorb durchzuführen.
quelle
Beide Methoden haben Vor- und Nachteile, aber aus meiner Sicht hat der Datenbankspeicher zwei ziemlich große Vorteile.
quelle
Die Frage geht davon aus, dass Sie überhaupt Sitzungen benötigen, die in meinem Kundenmarkt nicht benötigt werden. Zufällig betreibe ich mehrere hundert E-Commerce-Websites, von denen eine Handvoll hohen Datenverkehr aufweist. Wir verwenden keine Sitzungen, da sie nur skalierbar sind, wenn sie ausgefarmt sind, langsamer sind oder mehr Setup erfordern. Sitzungen verbrauchen Speicher und die Datenbank, die den Sitzungsstatus abruft, ist sehr langsam und erfordert mehr bewegliche Teile.
Stattdessen verwenden wir HTML5 sessionStorage, um alle Benutzerinformationen zu speichern, die wir immer wieder abrufen müssen, ohne dass jedes Mal ein Cookie-Rountrip erforderlich ist, um die Bandbreite zu erhöhen. Dies ist IE8 + und alle anderen modernen Browser und Mobilgeräte sind mit dieser Technologie kompatibel. ABER Sie können den Einkaufswagen einfach als Ersatz in einem Cookie ablegen, wie wir es zuvor getan haben. Hier ist ein guter Cookie-Cart: http://simplecartjs.org/
Wenn sich Benutzer anmelden oder einloggen, verwenden wir ein verschlüsseltes Cookie mit einem eingebrachten Zeitstempel.
Wir arbeiten auch an der Verwendung von ApplicationCache, um den Web-Datenverkehr als Randnotiz weiter zu reduzieren, da Sie Ressourcen und sogar Katalogdaten vorab abrufen können, sodass die Benutzerperspektive eine superschnell ladbare Website ist und Mobilgeräte auch offline funktionieren (abzüglich Transaktionen). Natürlich müssen Sie darauf achten, das Manifest zu aktualisieren, wenn sich Produkte usw. ändern.
quelle
Sie gehen davon aus, dass der Sitzungsspeicher und der Datenbankspeicher exklusiv sind. Sie sind nicht. Beginnen wir aber mit der Annahme, dass dies der Fall ist.
Der Vorteil der Sitzungsspeicherung ist dreifach:
Nachteile des Sitzungsspeichers:
Vorteile der Datenbankspeicherung:
Nachteile des Datenbankspeichers:
Sie haben nicht erwähnt, welche Plattform Sie verwenden. Ich würde nach einem Ansatz suchen, der eine datenbankgestützte Sitzung verwendet, bei der die Sitzungsdaten nur während der Lebensdauer eines Anforderungs- / Antwortzyklus im Speicher vorhanden sind, sie aus der Datenbank laden und in die Datenbank zurückspeichern. Das hat mir in der Vergangenheit sehr geholfen.
Vorteile einer datenbankgestützten Sitzung:
Nachteile einer datenbankgestützten Sitzung:
Es gibt eine dritte Möglichkeit, die jemand zuvor angesprochen hat. Sie können die Verwendung von Sitzungen insgesamt überspringen und clientseitigen Speicher verwenden, indem Sie entweder alles in ein Cookie oder in einen lokalen HTML-Speicher einbetten.
Ich überlasse Ihnen das Für und Wider als Übung, aber ich gebe Ihnen einen Hinweis, dass bei der Speicherung von HTML5 die Browserkompatibilität sorgfältig geprüft werden muss.
Ich habe die Fakten für Sie skizziert. Hoffentlich hilft Ihnen dies dabei, die richtige Entscheidung für Ihre Situation zu treffen.
quelle
Betrachten wir die beiden von Ihnen erwähnten Anwendungsfälle
In diesem Fall möchten Sie auf jeden Fall die Warenkorbinformationen des Benutzers in einer Sitzung speichern, um dem Benutzer während seiner Sitzung einen guten Service zu bieten. Wenn er sich entscheidet, sich anzumelden oder ein Konto zu erstellen, können Sie dies basierend auf dem nächsten Anwendungsfall tun. Wenn er sich nicht anmeldet, müssen Sie Ihre Datenbank nicht mit den Informationen dieses Gastbenutzers füllen, da diese nur verwendet wurden, um den Gast während der Sitzung zu bedienen. Diese Daten können statusfrei verarbeitet werden, dh der Status wird nicht von Sitzung zu Sitzung gespeichert.
In diesem Fall können Sie wie oben beschrieben vorgehen (alte E-Commerce-Websites) und diese Informationen auch zur Datenbank hinzufügen und dem Benutzer zuordnen. Dies wird hauptsächlich verwendet, um zustandsbezogene (von Sitzung zu Sitzung gespeicherte) Informationen bereitzustellen, wie z. B. "Produkt-Browserverlauf", "Empfehlungen" usw., ähnlich wie bei Amazon.com.
Dinge, über die man nachdenken sollte:
quelle
Gehen Sie zur Sitzung, wenn der Benutzer nicht angemeldet ist. Auch wenn Sie angemeldet sind, erstellen Sie den Einkaufswagen zuerst in der Sitzung und speichern Sie ihn nur dann in der Datenbank, wenn sich der Benutzer abmeldet oder die Sitzung abläuft.
Sie müssen die Anzahl der in der Sitzung erstellten Warenkörbe überprüfen.
quelle