값을 작고 버전이 지정된 데이터 객체에 저장하세요
240과 같은 단순한 점수를 저장하는 대신 { version: 2, bestScore: 240, settings: { sound: true } }와 같은 JSON 개체를 저장하세요. 로드 시 텍스트를 구문 분석하고, 개체인지 확인하고, 필드를 사용하기 전에 해당 버전을 검사하세요. JSON.parse는 잘못된 JSON에 대해 SyntaxError를 발생시킬 수 있으므로 플레이어가 시작되기 전에 시작이 중지되도록 허용하는 대신 정의된 폴백을 사용하여 잘못된 형식의 텍스트를 처리하세요.
데이터 객체를 간결하게 유지하고 각 버전의 의미를 문서화하세요. 버전 번호만으로 유효성이 보장된다고 여기지 마세요. 버전 2로 표시된 값도 불완전하거나 유형이 잘못되었을 수 있습니다. 현재 빌드가 실제로 사용하는 필드를 검사하세요. 예를 들어 bestScore는 유한한 음이 아닌 숫자여야 하고, 사운드 설정은 불리언 값이어야 합니다.
지원하는 각 이전 형식에 대한 마이그레이션을 작성하세요
버전 1 마이그레이션은 이전 숫자를 새 데이터 객체로 변환하고 기본 설정을 채운 뒤 버전 2 형식으로 저장할 수 있습니다. 여러 과거 버전을 지원한다면 버전 1에서 2로, 이어서 2에서 3으로 순차적으로 마이그레이션하세요. 키 누락, 잘못된 JSON, 알 수 없는 미래 버전, 부분적으로 기록된 값을 포함해 각 테스트 사례를 독립적으로 확인하세요. 알 수 없는 데이터를 보존, 무시, 초기화 중 어떻게 처리할지 정하고 필요한 경우 복구 메시지를 표시하세요.
브라우저 저장소의 한계를 고려하세요
MDN은 localStorage를 브라우저 세션을 넘어 유지될 수 있는 출처별 데이터라고 설명합니다. 그러나 저장소를 사용할 수 있는지, 어떤 내용이 남는지는 계정 백업으로 보장되지 않습니다. 비밀이나 신뢰가 필요한 결정을 저장하지 마세요. 게임이 저장 데이터를 읽지 못하면 정의된 새 게임 상태를 허용하고, 매번 시작할 때 같은 실패한 마이그레이션을 다시 시도하지 마세요.
localStorage 게임 데이터 버전 관리 관련 질문
형식이 변경되면 모든 저장 내용을 지워야 합니까?
그것이 명시적인 제품 결정인 경우에만 가능합니다. 중요한 값을 안전하게 매핑할 수 있는 경우 소규모 테스트 마이그레이션을 통해 해당 값을 보존할 수 있습니다. 그렇지 않으면 명확한 대체를 정의하고 재설정을 설명하십시오.
버전 필드가 localStorage 데이터를 안정적으로 만들어 주나요?
아니요. 게임이 이를 마이그레이션하거나 거부할 수 있도록 예상되는 모양을 식별합니다. 데이터가 여전히 누락되거나, 형식이 잘못되었거나, 오래되었거나, 사용할 수 없을 수 있으므로 사용하기 전에 유효성을 검사하십시오.
추가 읽을거리
오래된 정보를 발견하셨나요? 수정 사항 제보