2014-01-20 1 views
1

저는 자바 스크립트를 처음 사용하고 있으며, IndexedDB를 사용하여 클라이언트 시스템에 데이터를 저장하고 있습니다. 속도와 다양한 기능을 확장하려면 이미지의 다양한 데이터를 저장하려고합니다. 문서화. 모든 유형의 데이터를 저장할 때마다 로컬 시스템에있는 공간은 실제 파일 크기의 4 배입니다.데이터베이스 크기 증가 및 삭제 기능이 작동하지 않습니다.

예를 들어 말해보세요. 루프를 사용하여 10MB 이미지 파일을 10 번 저장하고 있습니다. DB의 결과 크기는 100MB 대신 400MB입니다. 그것은 물론 브라우저마다 다릅니다. 1MB 문서를 100 번 저장하려고하면 DB의 크기는 100MB 대신 472MB입니다.

내가 직면 한 또 다른 문제는 레코드를 삭제하거나 ObjectStore를 비울 때마다 Onsuccess 이벤트가 트리거된다는 것입니다. 이후에 삭제 된 레코드에 대한 참조는 데이터 없음을 나타내지 만 DB가 차지하는 메모리는 동일하게 유지됩니다. 예 : 총 1GB의 레코드를 저장할 때 DB가 4GB를 점유하고 삭제 작업이 끝나면 IndexedDB 폴더의 크기는 여전히 4GB로 표시됩니다. 크롬에서 데이터를 삭제하거나 읽으려고하면 이미 사용하는 것보다 더 많은 메모리를 차지합니다. 제발 해결책을주세요.

+0

어떻게 DB의 크기를 측정하고 있습니까? –

+0

. Chrome의 IndexedDB 폴더에있는 .ldb 파일의 파일 크기를 확인하여. – sivaguru

+0

이것은 Html 및 Script 파일에 대한 링크입니다. 실수를 저 지르면 알려주세요. http://www.2shared.com/document/c7_yGmrh/testpage.html http://www.2shared.com/document/xNPD7AcU/testscript.html – sivaguru

답변

0

onupgradeneeded 이벤트에서 "createIndex"문을 제거하고 DB 크기를 실제 데이터 크기로 줄였습니다.

또한 내 질문에 명시된 삭제 작업이 효과적입니다. DB에 의해 점유 된 공간은 DB 또는 레코드를 삭제 한 직후에 해제되지 않지만 나중에 새 레코드가 삽입 될 때 수행됩니다.

그러나 왜 아직도 createIndex 문이 나에게 많은 문제를 일으키는 지 알지 못합니다.

관련 문제