$wsStore-Modul ist ein Key-Value-Store (Schlüssel-Wert-Speicher) für das Frontend. Darüber lassen sich beliebige Daten unter einem frei wählbaren Schlüssel ablegen, später wieder auslesen oder gezielt löschen.
Es ist das passende Werkzeug überall dort, wo Informationen benötigt werden, die das Shopsystem im Standard nicht vorhält.
Modulübersicht
Beispiel / Ausschnitt über$wsStore
"ƒ()" kennzeichnet eine Funktion.
Methoden in der Übersicht
Methoden
$wsStore.set()
Speichert einen beliebigen Wert unter einem Schlüssel. Der Wert kann später über get() wieder abgerufen werden. Optional kann eine Gültigkeitsdauer (ttl) in Sekunden angegeben werden, nach der der Eintrag automatisch entfernt wird. Ohne ttl gilt ein Standardwert von 365 Tagen.
Signatur$wsStore.set(key, value, ttl)
Rückgabe
Parameter
Beispiel - Session-Marker setzen, damit ein Produktaufruf nur einmal pro Besucher gezählt wird
Um auf der Produktseite die Anzeige “X mal in den letzten 24 Stunden angesehen” zu realisieren, muss verhindert werden, dass derselbe Besucher den Zähler durch mehrfaches Neuladen der Seite verfälscht. Dafür wird pro Besucher ein Marker gesetzt - solange dieser Marker existiert, wird der Produktaufruf für diesen Besucher nicht erneut gezählt.
$wsSession.id ist die eindeutige Session-ID des aktuellen Besuchers. Sie wird automatisch vom Shopsystem bereitgestellt und muss nicht selbst vergeben werden.
14400 Sekunden entsprechen 4 Stunden – so lange gilt der Marker.
Ab dem Setzen liefert
$wsStore.get('productViewSession-<ProduktID><SessionID>') für 4 Stunden den Wert true zurück. Der eigentliche Zähler, der dem Besucher die Anzeige “X mal in den letzten 24 Stunden angesehen” ausgibt, wird über increment() gepflegt. Erst nach Ablauf der 4 Stunden darf der Produktaufruf desselben Besuchers erneut in den Zähler einfließen.
$wsStore.get()
Gibt den Wert zurück, der zuvor mit set() unter dem angegebenen Schlüssel gespeichert wurde. Ist kein Eintrag vorhanden oder ist der Eintrag abgelaufen, wirdnull zurückgegeben.
Signatur$wsStore.get(key)
Rückgabeany - Der gespeicherte Wert, oder null , wenn kein Eintrag vorhanden ist oder der Eintrag abgelaufen ist.
Parameter
Beispiel - Anzeige “X mal in den letzten 24 Stunden angesehen” auf der Produktseite
Um dem Besucher auf einer Produktdetailseite eine Anzeige wie “X mal in den letzten 24 Stunden angesehen” auszugeben, wird der zuvor mit increment() hochgezählte Wert ausgelesen. Existiert noch kein Eintrag (weil das Produkt in den letzten 24 Stunden noch nicht aufgerufen wurde), liefert get() null und die Anzeige wird übersprungen.
$wsStore.delete()
Löscht den Eintrag für den angegebenen Schlüssel aus dem Store. Nach dem Löschen gibt get() für diesen Schlüsselnull zurück.
Signatur$wsStore.delete(key)
Rückgabe\
Parameter$wsStore.increment()
Erhöht einen Zählerwert unter dem angegebenen Schlüssel um den angegebenen Wert. Existiert der Schlüssel noch nicht, wird er mit dem Wert vonamount angelegt.
Diese Methode sollte bevorzugt gegenüber einer Kombination aus get() und set() verwendet werden, wenn ein Zähler erhöht werden soll.Das liegt daran, dass get() und set() das Hochzählen in zwei Schritten durchführen - erst den aktuellen Wert lesen, dann den erhöhten Wert speichern. Rufen zwei Besucher die Seite gleichzeitig auf, lesen beide in Schritt 1 denselben Wert, beispielsweise 5. Beide speichern anschließend 6. Der Zähler steht am Ende auf 6, obwohl er auf 7 stehen müsste. Mit
increment() passiert das Lesen und erhöhen in einem einzigen Schritt, sodass beide Aufrufe korrekt gezählt werden.
Signatur$wsStore.increment(key, amount, ttl)
Parameter
Beispiel - Produktaufrufe zählen, einmal pro Session
Ziel ist die Anzeige “X mal in den letzten 24 Stunden angesehen” auf der Produktseite. Damit derselbe Besucher den Zähler nicht durch mehrfaches Neuladen verfälscht, wird pro Session zusätzlich ein Marker gesetzt, der verhindert, dass derselbe Besucher das Produkt mehrfach zählt.
$wsSession.id ist die eindeutige Session-ID des aktuellen Besuchers. Sie wird automatisch vom Shopsystem bereitgestellt und muss nicht selbst vergeben werden.
Der Zähler
productViews-<ProduktID> wird pro Besucher höchstens einmal alle 4 Stunden erhöht. Die anschließende Anzeige mit get() zeigt dem Besucher z.B.: “7 mal in den letzten 24 Stunden angesehen”. Nach Ablauf von 24 Stunden startet der Zähler automatisch wieder bei null.