Werte in einem kleinen versionierten Datenobjekt speichern
Anstatt eine bloße Punktzahl wie 240 zu speichern, speichern Sie ein JSON-Objekt wie { version: 2, bestScore: 240, settings: { sound: true } }. Analysieren Sie beim Laden den Text, überprüfen Sie, ob es sich um ein Objekt handelt, und überprüfen Sie seine Version, bevor Sie Felder verwenden. JSON.parse kann einen SyntaxError für ungültiges JSON auslösen. Behandeln Sie daher fehlerhaften Text mit einem definierten Fallback, anstatt zuzulassen, dass der Start stoppt, bevor der Player beginnen kann.
Halten Sie das Datenobjekt kompakt und dokumentieren Sie die Bedeutung jeder Version. Betrachten Sie die Versionsnummer nicht als ausreichende Validierung: Ein als Version 2 markierter Wert kann unvollständig sein oder den falschen Typ haben. Prüfen Sie die Felder, auf die der aktuelle Build tatsächlich angewiesen ist, etwa bestScore als endliche, nicht negative Zahl und die Sound-Einstellung als booleschen Wert.
Für jedes unterstützte alte Format eine Migration schreiben
Eine Migration von Version 1 kann die alte Zahl in das neue Datenobjekt umwandeln, eine Standardeinstellung ergänzen und das Format von Version 2 speichern. Unterstützen Sie mehrere historische Versionen, führen Sie die Migrationen nacheinander aus: von Version 1 auf 2 und anschließend von 2 auf 3. Testen Sie jeden Testfall einzeln, darunter einen fehlenden Schlüssel, fehlerhaftes JSON, eine unbekannte zukünftige Version und einen teilweise geschriebenen Wert. Entscheiden Sie, ob unbekannte Daten erhalten, ignoriert oder zurückgesetzt werden, und zeigen Sie bei Bedarf eine Wiederherstellungsmeldung an.
Grenzen des Browser-Speichers berücksichtigen
MDN beschreibt localStorage als ursprungsgebundene Daten, die über Browser-Sitzungen hinweg bestehen bleiben können. Verfügbarkeit und Inhalt sind jedoch keine garantierte Kontosicherung. Speichern Sie dort weder Geheimnisse noch Entscheidungen, auf die man sich verlassen muss. Kann ein Spiel einen Spielstand nicht lesen, ermöglichen Sie einen definierten Neustart und vermeiden Sie, dieselbe fehlgeschlagene Migration bei jedem Start erneut zu versuchen.
Fragen zu Versionierung der Spieldaten von localStorage
Sollte ich alle Speicherungen löschen, wenn sich das Format ändert?
Nur wenn das eine explizite Produktentscheidung ist. Wenn wichtige Werte sicher zugeordnet werden können, können sie durch eine kleine getestete Migration erhalten bleiben. Andernfalls definieren Sie einen eindeutigen Fallback und erläutern Sie den Reset.
Macht ein Versionsfeld localStorage-Daten zuverlässig?
Nein. Es identifiziert die erwartete Form, sodass das Spiel sie migrieren oder ablehnen kann. Daten können immer noch fehlen, fehlerhaft, veraltet oder nicht verfügbar sein. Überprüfen Sie sie daher vor der Verwendung.
Weiterlesen
Etwas nicht mehr aktuell? Korrektur melden