Sie können dies ohne Datenbank beheben, aber ich würde es nicht empfehlen. Grundsätzlich haben Sie (Benutzer, localStorage) Paare, und wenn sich ein bestimmter Benutzer identifiziert, sollte sein localStorage in gewisser Weise bereitgestellt werden. Sie können Benutzer anweisen, ihre lokalen Speicher auf ihrem eigenen Computer zu speichern, müssen sie dann jedoch auf andere Computer kopieren, was arbeitsintensiv ist und niemals an Beliebtheit gewinnt. Man könnte einen Javascript-Block manuell in der Konsole seines Browsers ausführen, um sicherzustellen, dass localStorage über seine Daten verfügt, und das Kopieren der localStorage-Daten über Maschinen hinweg ist nur geringfügig einfacher als das manuelle Ausführen des Ganzen.
Sie können die codierten localStorage-Informationen in eine URL einfügen. Neben dem Problem der URL-Länge, das zu einem Problem werden kann, und den allgegenwärtigen Codierungsproblemen kann Ihr gesamtes localStorage von einem Dritten überwacht werden, der Zugriff auf Ihren Router hat. Ich weiß , Sie haben gesagt, dass die Daten nicht empfindlich sind, aber ich glaube, dass es nicht empfindlich ist noch . Sobald Benutzer dies verwenden, speichern sie, wenn es zweckmäßig ist, auch vertrauliche Daten, oder Ihre Kunden haben möglicherweise solche Aufgaben für Sie, oder Sie stellen möglicherweise fest, dass Sie dort Daten speichern müssen, die nicht zu 100% öffentlich sind.
Außerdem werden Sie in der Praxis mit sehr ernsten Problemen bei der Synchronisierung konfrontiert sein, das heißt, es ist alles schön, localStorage agnostisch zu machen, aber was ist dann die eigentliche Version? Wenn Sie regelmäßig an 10 verschiedenen Sitzungen arbeiten, wird die Synchronisierung der localStorages zu einem schwierigen Problem. Dies bedeutet, dass der localStorage mit einem Zeitstempel versehen werden muss.
Sie benötigen also einen zentralen Ort, einen Server zum Speichern der zuletzt gespeicherten localStorage-Version. Wenn Sie aus unbekannten Gründen von Datenbanken abgewendet werden, können Sie localStorages in Dateien speichern, die den Benutzer identifizieren, z
johndoe.json
Anschließend müssen Sie eine Exportfunktion implementieren, die den aktuellen JSON des Benutzers an den Server sendet und in einer Datei und einer Importfunktion speichert. Dadurch wird die für den Benutzer gespeicherte Datei heruntergeladen und sichergestellt, dass localStorage aktualisiert wird entsprechend. Sie können beide auch zusammen ausführen und eine Synchronisation implementieren.
Dies ist bisher einfach, aber was ist, wenn der Benutzer bereits einige nützliche Daten in seinem lokalen localStorage und auch auf dem Server hat? Der einfachste Ansatz besteht darin, einen mit dem anderen zu überschreiben, aber welcher? Wenn wir importieren, wird der lokale überschrieben, beim Exportieren wird der auf dem Server überschrieben. Wenn wir synchronisieren, wird der ältere überschrieben.
In einigen Fällen möchten Sie jedoch zwei localStorages desselben Benutzers zusammenführen.
neue Elemente
Ich glaube, wenn ein Element neu ist, sollte auf irgendeine Weise bekannt sein, dass es in dieser Sitzung erstellt wurde. Dies ist hilfreich zu wissen, da dies bedeutet, dass dieses neue Element in der anderen Sitzung, mit der wir zusammenführen, nicht entfernt wurde und daher ist es intuitiv, es hinzuzufügen.
Elementänderungen
Wenn dasselbe Element in beiden Fällen unterschiedlich ist, sollte die neuere Version Vorrang haben.
entfernte Elemente
Der interessante Fall ist, wenn es in einer Sitzung entfernt und in der anderen aktualisiert wurde. In diesem Fall sollte sich die neuere Änderung durchsetzen.
Trotz Ihrer Bemühungen können Benutzer (und auch Ihre Software) immer noch Probleme haben. Daher ist es sinnvoll, jede Sitzung auf Ihrem Server zu sichern.