###前提・実現したいこと
はてなブックマークのように、ユーザーがお気に入りリストを保存できるサイトを作っています。
そのデータをユーザーがブラウザにローカルで保存しておく方法として、どちらが適しているか知りたいです。
【A】「IndexedDB」を使う方法
【B】「ただの変数」を使う方法
わたしは次の設計案であれば【B】が適していると考えたのですが、これについてアドバイスを頂けませんでしょうか。
(「ローカル」というのは「ネットワーク通信なし」という意味で使わせて頂きます。)
###お気に入りリストの設計案
①お気に入りリストはローカルに全件保存し、ソートや検索を早くしたいという思いです。
②件数は多くて数万件で、もしローカルの許容量をオーバーした場合は全件は保存せず、DBから通信してその都度ソートや検索しようと思っています。
③サイト内のページ遷移はすべてAJAXで行います。
④サイトにアクセスしたときは、まずローカルのお気に入りリストを削除して、次にDBから通信してお気に入りリストを取得して、ローカルに保存します。(もちろん【B】の場合は削除のステップはありません。)
###【B】が適していると考えた経緯
一晩かけて【A】の「IndexedDB」を使う方法を調べまして、「localforage」と「Dexie」というライブラリをそれぞれ実装して試してみました。
このうち「Dexie」は普通のSQLのようにインデックスを効かせることができて便利なのでほぼ実装完了までいったのですが、LIKE検索ができないのだと気づきました・・・・涙
そのため正規表現で.filter
を使う方法となり、微妙だなぁと悩んでいたところ見つけたのが、【B】の「ただの変数」を使う方法です。
そのライブラリが「List.js」というものでして、こちらはどうやらインデックスを効かせることができる上、LIKE検索もできるようで、現在はこいつを実装している途中。
というのが経緯です。
###質問
前置きが長くてすみません。質問です。
■Q1
「List.js」がデータを保存するのは、「ただの変数」という解釈はあっていますか?間違っているのなら、どこに保存されているのでしょうか?
(「localStorage」にもないし「IndexedDB」にもないので、「ただの変数」に保存されているのだろうという予想です)
■Q2
もし「ただの変数」に保存されるのであれば、数メガしか入らない「IndexedDB」と比べて、「ただの変数」なら1ギガくらい入ると思います。上記の設計案でしたら「ただの変数」の方が絶対にいいと思うのですが、いかがでしょうか。問題やデメリットはありますか?
■Q3
この「localforage」「Dexie」「List.js」以外に、上記の設計案にピッタリそうなものはございますか?(Reactやview.jsというものは使えず、JavaScriptかjQueryで考えています。)
以上になります。
ご回答どうぞ宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー