2012-08-10 1 views
1

내 앱에 사진 조작/편집기 부분이 포함되어 있습니다.base64 이미지 데이터를 임시 저장하는 IndexedDB 또는 javascript 객체 저장소?

나는 사용자가 이미지를 조작 할 수있게하고 수정이있을 때마다 이미지의 '실행 취소'버전을 저장합니다. 이 '실행 취소 상태'는 javascript 객체에 base64 이미지 데이터로 저장됩니다.

이렇게하면 이전 버전을 나중에 검색 할 수 있습니다. 그것은 아주 잘 작동하지만 나는 이렇게 많은 이미지를 메모리에 직접 저장하는 것에 대한 우려를 가지고 있습니다.

사용자 방문 사이에 이러한 실행 취소 상태가 유지 될 필요가 없으며 사용자가 실제로 이미지를 조작하는 동안 저장소가 필요합니다.

이러한 여러 이미지를 저장하기 위해 indexedDB를 사용하는 것이 더 좋습니까? 그렇다면 왜? indexedDB는 어디에서 데이터를 저장합니까? 브라우저 메모리에 직접 있습니까? 그렇다면, 내가 현재 가진 방식으로 자바 스크립트 객체에 직접 저장하는 것과 다를 것입니까?

요약하면, 나중에 액세스 할 수 있도록 javscript 객체에 현재 base64 데이터와 동일한 이미지의 여러 버전을 저장하고 있습니다. 이 데이터 클라이언트 측을 임시로 저장하는 더 좋은 방법이 있습니까?

답변

1

조금 늦었지 만, 같은 상황에 처한 후 방금 찾은 바가 있습니다. IndexedDB는 어느 시점에서 쿼리해야하는 대용량 데이터에 가장 적합합니다. IndexedDB는 또한 localstorage가 제공하는 "safezone"5MB 이상을 허용합니다. (물론 브라우저 관련 문제가 있으며 어떤 브라우저가 어떤 것을 지원하는지 보려면 아래의 jstore 링크를 참조하십시오.)

데이터 파일은 어디에 있습니까? 내가 이해 한 바에 따르면 웹 브라우저의 임시 디렉토리 또는 로컬 App 데이터 디렉토리의 OS에 따라 로컬 저장 내용이 존재합니다. 아직 테스트하지는 않았지만 로컬 스토리지는 쿠키와 비슷하므로 둘 다 "웹 브라우저의 일부"라는 점에서 의미가 있습니다. (파이어 폭스에서는 Firebug를 사용하여 로컬 스토리지의 내용을 직접 검사 할 수 있습니다.) 빠른 검색 (즉 포괄적이지는 않습니다)을 기반으로 localstorage와 IndexedDB가 데이터를 저장하지 않는다는 사실을 발견했습니다. 메모리에. 제발 틀렸 으면 제발 맞춰주세요!

다음은 localstorage 및 IndexedDB에 대해 좀 더 자세히 설명하는 웹 사이트입니다. 이 사이트는 또한 플러그인은 다양한 브라우저에 적절한 장소에 데이터를 저장 돌봐, jstore.js 주택 : 그에서 제외

http://www.jstorage.info/ 

, "색인화에 이미지 파일을 저장라는 흥미로운 기사, 거기에 파이어 폭스에서 DOM 저장 데이터 "에서 :

https://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/ 

에서 모질라 웹 사이트에 좋은 정보가 파이어 폭스와 크롬에 관해서

https://developer.mozilla.org/en-US/docs/DOM/Storage#Storage_location_and_clearing_the_data 

, 그것은 그런 상태" 프로필 폴더의 webappsstore.sqlite 파일에 저장됩니다. chromeappsstore.sqlite 파일은 브라우저의 자체 데이터를 저장하는 데 사용됩니다. 특히 시작 페이지 : about : home이지만 "about :"URL이 포함 된 다른 내부 페이지에도 사용 가능합니다. "

localstorage 또는 IndexedDB에 이미지를 저장할 때 실제로 어떤 일이 일어나는지 이해하려면 해당 링크를 확인하고 해당 링크의 추가 링크, 특히 Mozilla의 링크를 따르는 것이 좋습니다.

+0

위 답변 Ace. 많은 감사합니다. 안하는 것보다 늦게하는 것이 낫다! – gordyr

관련 문제