1

私のアプリには写真加工/編集部分が含まれています。

その中で、ユーザーが画像を操作できるようにし、変更が加えられるたびに画像の「元に戻す」バージョンを保存します。この「元に戻す状態」は、base64画像データとしてjavascriptオブジェクトに保存されます。

このようにして、以前のバージョンを後で取得できます。それは非常にうまく機能しますが、私はこのように非常に多くの画像をメモリに直接保存することに懸念を抱いています。

ユーザーがアクセスする間、これらの取り消し状態を維持する必要はありません。ストレージが必要になるのは、ユーザーが実際に画像を操作している間だけです。

indexedDBは、これらの複数の画像を保存するためのより良いオプションでしょうか?もしそうなら、なぜですか?indexedDBはそのデータをどこに保存しますか?それはブラウザのメモリに直接保存されますか?もしそうなら、それは私が現在している方法でjavascriptオブジェクトに直接保存することと何か違いがありますか?

要約すると、base64データと同じ画像の複数のバージョンを現在、後でアクセスできるように直接javascriptオブジェクトに保存しています。このデータクライアント側を一時的に保存するより良い方法はありますか?

4

1 に答える 1

2

少し遅いですが、同じ状況に遭遇した後、私が見つけたのはこれです。IndexedDBは、ある時点でクエリが必要になる可能性のある大量のデータに最適です。IndexedDBは、localstorageが提供する「セーフゾーン」5MB以上も可能にします。(もちろん、いくつかのブラウザーの問題があります。どのブラウザーが何をサポートしているかを確認するには、以下のjstoreリンクをたどってください。)

データファイルはどこにありますか?私の理解では、ローカルストレージのコンテンツは、Webブラウザの一時ディレクトリに存在するか、OSによってはローカルのAppDataディレクトリに存在します。まだテストしていませんが、ローカルストレージはCookieに似ているため、どちらも「Webブラウザーの一部」であるという意味で、それは理にかなっています。(さらに、Firefoxでは、Firebugを使用してローカルストレージの内容を直接検査できます。)

したがって、私の簡単な調査(つまり、包括的ではない)に基づいて、localstorageとIndexedDBの両方がデータをメモリに格納しないことがわかりました。どうか、私が間違っている場合は訂正してください!

これは、localstorageとIndexedDBについてもう少し説明しているWebサイトです。このサイトには、さまざまなブラウザの適切な場所にデータを保存するためのプラグインであるjstore.jsも含まれています。

http://www.jstorage.info/

それとは別に、「IndexedDBに画像とファイルを保存する」という興味深い記事があります。

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

次のMozillaWebサイトにいくつかの良い情報があります。

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

FirefoxとChromeに関しては、「Firefoxでは、DOMストレージデータはプロファイルフォルダーのwebappsstore.sqliteファイルに保存されます(特にスタートページ用に、ブラウザー自体のデータを保存するために使用されるchromeappsstore.sqliteファイルもあります)。 :homeですが、「about:」URLを含む他の内部ページの場合もあります。」

localstorageまたはIndexedDBに画像を保存するとどうなるかを実際に理解するには、これらのリンクを確認し、これらの記事、特にMozillaのリンクをたどることをお勧めします。

于 2012-12-18T17:05:39.033 に答える