Client-seitiger oder Server-Side-Shopping-Kartenspeicher

8

Ich entwerfe jetzt ein Geschäft und in einigen meiner früheren Geschäfte habe ich den Warenkorb auf der Client-Seite (in einem Cookie) gespeichert, aber ich habe ein Buch gelesen "Agile Web Development with Rails 4", wo der Autor die Einkaufskarte gestaltet in der Datenbank auf dem Server gespeichert werden? Welcher Ansatz ist besser? Was sind Vor- und Nachteile?

    
Maxim Filippov 12.01.2014, 17:15
quelle

2 Antworten

15

Bei dieser Frage geht es mehr darum, wie man mit Sitzungsdaten (auf sichere Weise) im Allgemeinen umgehen soll, als wie man insbesondere Warenkorb-Daten speichert.

Die zwei Ansätze sind im Grunde:

  • Speichern Sie nur eine Sitzungs-ID im Cookie und speichern Sie die Sitzungsinformationen (in diesem Fall den Inhalt des Einkaufswagens) auf dem Server.

  • Speichern Sie die Sitzungsdaten selbst im Cookie. Der Server kann diese Informationen dann während der Verarbeitung der Anfrage lesen.

Es gibt ein paar Probleme, wenn Sie die Daten in einem Cookie auf der Client-Seite speichern:

  • Der Benutzer kann den Inhalt ändern. Dies ist ein wichtiges Sicherheitsproblem. Aus Sicherheitsgründen müssen Sie davon ausgehen, dass der Benutzer jedes Feld, das Sie gespeichert haben, geändert hat, so dass Sie alles serverseitig überprüfen müssen. Z.B. Wenn Sie den Preis der Produkte in Ihrem Cookie speichern, dürfen Sie nicht davon ausgehen, dass dieser Preis tatsächlich korrekt ist, da er möglicherweise geändert wurde. Sie müssen stattdessen den Preis erneut aus der Datenbank abrufen. Es ist schwer vorstellbar, dass alles, was mit all diesen manipulierten Daten schief gehen könnte, ein wichtiges Anliegen ist. Wenn Sie nur die Sitzungs-ID speichern, müssen Sie nur die Gültigkeit dieser ID überprüfen (was wahrscheinlich durch das von Ihnen verwendete Framework geschieht). Alle Daten in der Sitzung können als vertrauenswürdig angesehen werden, da sie nur gespeichert werden serverseitig.

  • Cookies haben eine begrenzte Größe (4kB iirc). Wenn Sie beispielsweise die Produktbeschreibungen in Ihrem Cookie speichern, geraten Sie früher oder später in Schwierigkeiten.

  • Die Daten bleiben lokal im Browser. Wenn ich bei Ihrer Arbeit auf Ihrer Website einkaufen gehe, einige Artikel in meinen Warenkorb legen und die Seite wieder öffnen, wenn ich zu Hause bin, um auszuchecken, wird mein Warenkorb leer sein.

  • Sie können nicht alle Ihre Kunden prüfen, welche Artikel zu einem bestimmten Zeitpunkt auf dem Server vorhanden sind. Dies kann für die Lagerhaltung wichtig sein. Oft möchten Sie Artikel in einem Einkaufswagen für eine angemessene Zeit für Ihren Kunden reservieren. Wenn nur noch ein Buch übrig ist und ich es in den Einkaufswagen gelegt habe, sollte es einem anderen Kunden nicht erlaubt sein, es in den Einkaufswagen zu legen, während meine Sitzung aktiv ist. Sie können dies nicht überprüfen, wenn mein Warenkorb lokal gespeichert ist, da meine Cookies nicht auf dem Server verfügbar sind, wenn ein anderer Kunde einen Artikel in seinen Warenkorb legt. Sie können die Einkaufswageninformationen auch nicht für Statistiken oder Analysen verwenden, wenn sich die Artikel nur auf der Clientseite befinden.

Wenn Sie es also richtig machen, würde ich Ihnen empfehlen, Ihre Einkaufswagen serverseitig zu lagern. Auf der anderen Seite gibt es einige Vorteile, sie auf dem Client zu speichern:

  • Es ist einfach und kann schnell implementiert werden.

  • Die Sitzungsverwaltung auf dem Server wird wahrscheinlich etwas komplizierter (obwohl das noch offen ist). Beachten Sie, dass Sie die Sitzungsdaten nicht unbedingt selbst in der Datenbank speichern müssen. Ihr Webanwendungsframework kann dies automatisch tun, es wird mit einer grundlegenden Sitzungsverwaltung geliefert. Sie brauchen nicht einmal eine Datenbank im Prinzip (Datei oder Speicher sollte verfügbar sein), aber da Sie sowieso eine Datenbank für Ihren Shop benötigen, ist dies wahrscheinlich nicht relevant.

  • Wenn die Daten auf dem Server gespeichert werden, müssen sie noch an den Client gesendet werden, um sie anzuzeigen. Wenn Sie Javascript verwenden, befinden sich die Daten im Cookie bereits auf dem Client, während Sie JSON und / oder AJAX verwenden müssen, wenn sie auf dem Server gespeichert sind.

  • Sie müssen alte Einkaufswagen nicht aufräumen. Wenn Sie Einkaufswagen serverseitig speichern, möchten Sie, dass sie ablaufen und nach einiger Zeit entfernt werden. Wenn Ihr Web-Framework die Sitzungsdaten verwaltet, ist dies auch dann kein Problem, wenn Sie die Daten serverseitig speichern, da die Sitzungsdaten vollständig ablaufen und das Framework die Reinigung für Sie übernimmt. p>

wkampmann 12.01.2014, 17:40
quelle
2

Ich denke, es ist einfach, Client-Seite zu speichern. Auf der Serverseite müssen Sie es in einer Datenbank speichern und aus einer Datenbank holen, was den Server unnötig belastet. Speichern Sie auf der Client-Seite einfach die ID der Artikel und deren Mengen und suchen Sie beim Checkout nach ihren Preisen und summieren Sie sie zusammen. Client-seitige Implementierung ist nicht nur einfacher, sondern auch einfacher für den Server.

    
mjkaufer 12.01.2014 17:18
quelle

Tags und Links