Web アプリケーションに「最近開いたファイル」機能を実装する予定で、使用する HTML5 テクノロジを決定しようとしています。ここで最も重要なことは、ファイルパスをファイルに保存してから再度開くことはできないという事実です。セキュリティ上の理由により、ファイルの読み取りは、ユーザーの操作 (入力からファイルを選択するか、ファイルをドラッグ アンド ドロップする) によって開始する必要があります。したがって、唯一のオプションは、ファイル全体をキャッシュに保存することです。ここに私のオプションがあります:
A. ローカルストレージ
JSON オブジェクトを次のように保存します。
{ "recent": [ {}, {},..., {} ] }
ここで、それぞれ
{}
は次のような JSON ファイル記述子です。{ "filename": "blah", "type" : "txt", "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...] }
ここで、各チャンクは lzw でエンコードされたデータ チャンクへの localstorage 内のキーです。各チャンクは、ファイルの読み取り中に取得された blobfile からのデータです。
localstorage は JSON ではなく文字列のみを格納できることは知っていますが、シリアル化するのは簡単です。このアプローチの問題は、ローカル ストレージと同期 API のサイズが制限されていることです。これにより、ファイルからデータのチャンクを読み取るときにアプリケーション全体が遅くなる可能性があります。
B.IndexedDB
この HTML5 機能について読み始めたところですが、どうやら非同期 API があり、fileBlob オブジェクト全体を格納できるようです。ただし、サイズ制限はわかりません。残念ながら、ブラウザのサポートは非常に限られており、API はひどいようです。
質問は:
どちらのテクノロジーを使用した Rcenty Opened Files の実装も見つかりません。ありますか?何か提案、既知の落とし穴はありますか?