데이터베이스 없이이 문제를 해결할 수는 있지만 권장하지는 않습니다. 기본적으로 당신은 (사용자, localStorage) 쌍을 가지고 있으며 주어진 사용자가 자신을 식별 할 때, 그 / 그녀의 localStorage는 방식으로 제공되어야합니다. 사용자에게 로컬 저장소를 자신의 컴퓨터에 저장하라고 지시 할 수 있지만 다른 컴퓨터에 복사해야하므로 노동 집약적이며 인기를 얻지 못할 것입니다. 브라우저의 콘솔에서 수동으로 Javascript 청크를 실행하여 localStorage에 데이터가 있는지 확인하고 localStorage 전체 머신을 복사하는 것이 전체 작업을 수동으로 수행하는 것보다 약간 더 쉽습니다.
localStorage 정보를 URL로 인코딩 할 수 있지만 문제가 될 수있는 URL 길이 문제 외에도 현재 인코딩 문제가 발생하면 라우터에 액세스하여 타사에서 전체 localStorage를 모니터링 할 수 있습니다. 데이터가 중요하지 않다고 말했지만 아직 민감 하지 않다고 생각합니다 . 그러나 일단 사용자가 이것을 사용하면 편리하다면 민감한 데이터도 저장하거나 고객이 그러한 작업을 수행하거나 100 % 공개되지 않은 데이터를 저장해야한다는 사실을 깨닫게됩니다.
이 외에도 실제로 동기화의 매우 심각한 문제에 직면하게됩니다. 즉, localStorage를 불가지론 적으로 만드는 것이 좋지만 실제 버전은 무엇입니까? 10 개의 서로 다른 세션에서 정기적으로 작업하는 경우 로컬 저장소 동기화가 어려운 문제가됩니다. 이는 localStorage에 타임 스탬프가 필요하다는 것을 의미합니다.
따라서 마지막으로 저장된 localStorage 버전을 저장하는 서버 인 중앙 위치가 필요합니다. 알 수없는 이유로 데이터베이스를 피할 경우 다음과 같이 사용자를 식별하는 파일 내에 localStorage를 저장할 수 있습니다.
johndoe.json
그런 다음 내보내기 기능을 구현해야합니다.이 기능은 사용자의 현재 JSON을 서버로 전송하고이를 파일 및 가져 오기 기능에 저장하여 사용자를 위해 저장된 파일을 다운로드하고 localStorage가 업데이트되도록합니다. 따라서. 동기화를 구현하여 두 가지를 함께 수행 할 수도 있습니다.
이것은 지금까지 간단하지만 사용자가 이미 로컬 localStorage 및 서버에 유용한 데이터를 가지고 있다면 어떨까요? 가장 간단한 방법은 서로를 재정의하는 것입니다. 가져 오는 경우 로컬 항목이 무시되고, 내보내는 경우 서버의 항목이 재정의되고 동기화하면 이전 항목이 재정의됩니다.
그러나 경우에 따라 동일한 사용자의 두 개의 로컬 저장소를 병합하려고합니다.
새로운 요소
요소가 새로운 것이라면 어떤 방식 으로든이 세션에서 생성되었다는 것을 알아야합니다. 이는 우리가 병합하는 다른 세션에서이 새 항목이 제거되지 않았 음을 의미하기 때문에 유용합니다. 따라서 추가하는 것이 직관적입니다.
요소 변경
두 경우에서 동일한 요소가 다른 경우 최신 버전이 우선합니다.
제거 된 요소
흥미로운 사례는 한 세션에서 제거되고 다른 세션에서는 업데이트 된 경우입니다. 이 경우 새로운 변화가 우선해야한다고 생각합니다.
그러나 최선의 노력에도 불구하고 사용자는 여전히 시스템을 엉망으로 만들 수 있으므로 서버의 각 세션을 백업하는 것이 좋습니다.