2014-10-03 6 views
2

ondelete 이벤트 처리기와 같은 것이 있거나 indexedDB 데이터베이스를 지우기 전에 사용자에게 경고하는 방법이 있습니까?사용자가 indexedDB 데이터베이스를 삭제하려고 할 때 함수를 실행하는 방법이 있습니까?

배경 : 오프라인 상태에서 indexedDB에 대부분의 데이터를 저장하여 작동하는 오프라인 응용 프로그램이 있습니다. 이제 사용자가 온라인 상태가되면 데이터를 서버에 동기화하려고 시도하지만 누군가가 실수로 브라우저를 재설정하거나 indexedDB를 지우면 서버에 동기화해야하는 중요한 데이터가 있기 때문에 재난이 발생할 수 있습니다.

그래서이 문제를 극복 할 수있는 방법이 있습니까? indexedDB를 영구 파일 시스템으로 저장하거나 삭제를 비활성화하거나 이벤트를 발생시키고 삭제가있을 때 올바르게 처리하는 방법이 있습니까?

답변

4

아니요. 일부 사용자가 사용하는 방법에도 불구하고 IndexedDB 데이터베이스의 데이터가 그대로 유지된다는 보장이 없습니다. 이것은 의도적으로 "임시"저장소입니다. 브라우저는 필요한 경우 여유 공간을 확보 할 수 있습니다. 궁극적으로는 store IndexedDB data as "persistent" data이 가능할 때 상황은 어느 정도 개선 될 것입니다. 그러나 데이터가 삭제되지 않도록하는 방법이 될 수는 없습니다. IMHO 사용자는 자신의 컴퓨터에서 데이터를 삭제할 수 있어야하며 그렇지 않은 경우 중요한 문제가됩니다.

그리고 문제는 당신이 깨닫지 못하는 것보다 더 심하다. 예를 들어 here's a bug in Chrome (다른 브라우저에서도 가능) 사용자가 "지난 24 시간 동안 내 쿠키 및 사이트 데이터 삭제"라고 말하면 Chrome은 지난 24 시간 내에 변경된 모든 IndexedDB 데이터베이스를 완전히 삭제합니다. 따라서 1 년 전에 생성되었지만 이후 변경되지 않은 DB에 5000 개의 객체가 있고 오늘 편집 된 객체가 모두 삭제 된 경우 이것은 사용자에게 혼동을 줄 수 있지만, 내 지식으로는 아무도 좋은 해결책을 제시하지 못했습니다.

유일한 해결 방법은 분명히 100 % 신뢰할 수없는 서버에 동기화하는 것입니다. 따라서 중요한 데이터가있는 경우 캐시를 제외하고 웹 사이트의 IndexedDB 데이터베이스에 있으면 안됩니다.