0

Web アプリケーションに「最近開いたファイル」機能を実装する予定で、使用する HTML5 テクノロジを決定しようとしています。ここで最も重要なことは、ファイルパスをファイルに保存してから再度開くことはできないという事実です。セキュリティ上の理由により、ファイルの読み取りは、ユーザーの操作 (入力からファイルを選択するか、ファイルをドラッグ アンド ドロップする) によって開始する必要があります。したがって、唯一のオプションは、ファイル全体をキャッシュに保存することです。ここに私のオプションがあります:

A. ローカルストレージ

  1. 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 の実装も見つかりません。ありますか?何か提案、既知の落とし穴はありますか?

4

1 に答える 1

0

あなたの JSON/LocalStorage アプローチは良い解決策だと思います。データを一時的な JS オブジェクトとして使用し、変更のたびに localstorage エントリをオーバーライドすることで、データを簡単に操作できます (モバイル アプリでよく使用します)。

JS MVC フレームワークを見て、作業を最適化することもできます http://backbonejs.org/docs/backbone-localstorage.html

ヒント : W3C はもはやサポートしていないため、webSQL (lite) DB は使用しないでください。

于 2013-03-07T10:42:10.807 に答える