0

我计划在我的 web 应用程序中实现“最近打开的文件”功能,并且我正在尝试决定使用哪些 HTML5 技术。这里最重要的是一个事实,我不能只将文件路径保存到文件然后重新打开它。由于安全原因,读取文件必须由用户操作(从输入中选择文件或拖放文件)启动。所以唯一的选择是将整个文件保存在缓存中。这是我的选择:

A. 本地存储

  1. 像这样存储 JSON 对象:

    {
        "recent": [
            {}, {},..., {}
        ]
    }
    

    其中每个{}都是一个 JSON 文件描述符,如下所示:

    {
        "filename": "blah",
        "type" : "txt",
        "chunks": ['"3bce4931-6c75-41ab-afe0-2ec108a30860"',...]
    }
    

    其中每个块是本地存储中 lzw 编码数据块的键。每个块都是来自 blobfile 的数据,在读取文件时获得。

    我知道,localstorage 只能存储字符串,不能存储 JSON,但序列化很容易。这种方法的问题是本地存储和同步 API 的大小有限,这会在从文件中读取大量数据时减慢整个应用程序的速度。

B. 索引数据库

我刚开始阅读有关此 HTML5 功能的信息,但显然它具有异步 API 并且能够存储整个 fileBlob 对象。我不知道尺寸限制。不幸的是,浏览器支持非常有限,API 似乎很糟糕。

问题是:

我找不到使用任何一种技术的 Rcenty Opened Files 的任何实现。你有?任何建议,已知的陷阱?

4

1 回答 1

0

我认为您的 JSON/LocalStorage 方法是一个很好的解决方案。您可以轻松地将数据用作临时 JS 对象并在每次修改时覆盖本地存储条目(我在移动应用程序中经常使用它)。

您还可以查看 JS MVC 框架以优化您的工作 http://backbonejs.org/docs/backbone-localstorage.html

提示:不要使用 webSQL (lite) DB,因为 W3C 不再支持它。

于 2013-03-07T10:42:10.807 回答