Kar*_*ell 8 javascript html5 gaia tizen firefox-os
您将如何在FirefoxOS,Tizen或任何其他移动纯JS解决方案中模拟内存映射文件?
用例适用于移动浏览器,您需要大量不适合RAM的数据,或者您不想浪费RAM而宁愿加载它.
我发现的唯一的东西是IndexedDB或我能做些什么呢?有更好的技巧或API吗?
嗯,看起来Web SQL数据库也可以成为Android,Tizen或iOS的解决方案.但Firefox不支持它(?)
更新:因为一些实验,我在问
首先,Web SQL 永远不会按照规范中的说明进行标准化,因此仅应考虑将其用于基于 WebKit/Blink 的浏览器。
\n\n这个问题中有一个关于离线存储选项的精彩概述,即使该问题中考虑了地图图块,我认为它仍然与您的用例相关。
\n\n我相信您使用 IndexedDB 处理图形数据的方向是正确的。从较高的层面来看,它是一个键值异步对象存储(请参阅基本概念文档)。对于您的用例,您可以在对象存储中索引图形节点。例如,LevelGraph库将图形数据存储在 IndexedDB 中,尽管它是为语义 Web 三元组构建的。HeliosJS也值得一提,尽管它是一个内存图形数据库。
\n\n编辑: IndexedDB 的当前 API 是异步的。规范中起草了同步 API,只能在 Web Worker 中使用。不幸的是,目前没有引擎实现此功能。Gecko有一个待处理的补丁,但我没有找到 Blink 或 WebKit 的任何计划,所以它现在不是一个有意义的选择。
\n\n可以通过 Web API 访问原始文件。您可以使用XHR2将(本地)文件作为二进制Blob加载。不幸的是,XHR2 主要是为流式文件而不是随机访问而设计的,尽管您可以将数据拆分为多个文件并按需请求它们,但这可能会很慢。\n对文件的直接访问目前相当有限,FileList和 createObjectURL主要用于直接文件用户输入(通过拖放或文件输入字段),FileSystem API最近已被终止,并且DeviceStorage是非标准且特权的(特定于 Firefox OS)。您还可以将文件存储在 IndexedDB 中,这在FileHandle API中进行了描述。但是,一旦您设法访问原始 File 对象,您就可以使用Blob.slice方法加载文件 \xe2\x80\x93 的块,这里有一个通过上传表单读取文件块的很好的示例。\n您可以还想看看jDataView库和朋友,它通过更高效的ArrayBuffer简化了二进制数据的处理。
\n\n编辑:对于同步API,也可以考虑localStorage (又名DOM存储)。它也是一种键值存储,但比 IndexedDB 简单得多,也受到更多限制:
\n\n总的来说,localStorage 是有用的 cookies 替代品,但对于存储大量离线数据来说并不是真正有用。
\n\n总结一下:
\n\n最后,您可以结合这两种方法,有两个选择:
\n\n在所有情况下,您都可以(应该)使用Web Workers在后台处理数据操作和计算。
\n\n不管怎样,GraphHopper 看起来很棒,我们真的缺乏这种重要的 Firefox OS 离线应用程序,祝你好运!
\n 归档时间: |
|
查看次数: |
1011 次 |
最近记录: |