私のアプリケーションは、webSQLを使用したクライアント側のデータベースストレージを使用して、ユーザーの情報を保存します。ブラウザがwebSQLから離れ始めていると聞きました。現在、Chrome、Safari、Operaのみがサポートしています。IEとFirefoxはwebSQLをサポートしていないため、ユーザーがこれらのブラウザーを使用している場合は、Cookieを使用して情報を保存しています。ただし、Cookieはあまり安全ではなく、大量のデータを保存することは困難です。私の質問は、すべてのブラウザがサポートしているjavascript APIに似た、より良いオプションはありますか?ありがとう。
2 に答える
IndexedDBは、オブジェクトベースのデータストアであるあなたにとってのオプションになると思います。現在Chromeでサポートされており、FirefoxとIE10も将来的にサポートする予定です。
http://html5-demos.appspot.com/static/html5storage/index.html#slide1をよりよく理解するには、次のプレゼンテーションを ご覧ください。
私の経験から、ブラウザの将来の変更のリスクを減らすためだけにラッパーライブラリを使用することをお勧めします。いくつかの人気のあるライブラリを以下に示します
- レミー・シャープによるストレージポリフィル
- Amplify.js HTML4ブラウザー(IE6を含む)のフォールバックを使用したHTML5APIのappendToによる
- RealStorage HTML5 APIは、API全体のサブセットです
- YUIチームによるYUI3CacheOffline
- Persistence.js 非同期Javascriptオブジェクト-データベースマッパー
- YDN-DBクロージャーライブラリの上に、IndexedDB、WebSql、localStorageビルド用の使いやすいデータベースラッパー。
私は2、3年遅れていますが、この質問が出されてからのクライアント側のブラウザスペースの開発を考えると、2セントを追加すると思いました。
この質問がなされた時点では、IndexedDBが唯一の代替WebSQLでしたが、当時のサポートは不十分でした。今日でも前者は当てはまりますが、後者は当てはまりません。現在、すべての主要なブラウザベンダーがIndexedDBを実装しています。
IndexedDBが現時点でW3C標準化過程に残っている唯一のデータベースであることを考えると、ネイティブのクライアント側データベースに関する限り、これはほとんど唯一のオプションです。
ただし、IndexedDBに飛び込む前に、知っておくべきことがいくつかあります。1つは、非リレーショナルドキュメントストアであるため、SQLをネイティブにサポートしていないことです。2つ目は、そのAPIが...控えめに言っても扱いにくいということです。
これらのことを考えると、 BakedGoodsをチェックすることをお勧めします。これを使用すると、たとえば、1つ以上のデータ項目をIndexedDBデータベースに配置するのは次のように簡単です。
bakedGoods.set({
data: [{key: "key1", value: "value1"}, {key: "key2", value: "value2"}],
storageTypes: ["indexedDB"],
function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
もちろん、あなたがマゾヒストのような人なら、私の提案を無視して生のAPIを扱うことができます。しかし、私があなたに警告しなかったと言ってはいけません!
完全な透明性のために、BakedGoodsは本当にあなたによって維持されます:)。