在IndexedDB和文件系统中,哪个更适合用于存储Chrome应用程序数据的本地存储?

3

我正在开发一个能够存储数据的谷歌浏览器应用程序。数据存储将是无限的。我有两个选择:使用Indexed DB和文件系统。

在以上两个选项中,哪一个是存储数据的好选择呢?


什么类型的数据?还有chrome.storage - Daniel Herr
通常情况下,数据就像任何Web应用程序一样使用,例如表中的记录以及在必要时使用的多媒体。 - Chetan
1个回答

3

使用文件系统API将数据存储在用户PC中有一些问题,因为您不能在没有用户批准的情况下这样做。因此,我的建议是在您的清单中使用以下权限来使用indexedDB:

"permissions": [
   "unlimitedStorage",
   "storage"
]

基本上,你可以在indexedDB中存储任何内容,唯一的问题是它有点慢且API混乱,但是有很多教程可供参考。我自己用它来制作离线应用程序。使用它有点困难,但是是一种可靠的持久化数据存储方式。
另外值得注意的一点是,如果你想存储键值对,比如应用程序的设置,你可以使用chrome storage API,它是基本的本地存储API,但是只适用于Chrome应用程序。
有用的阅读资料:https://developer.chrome.com/apps/offline_apps

你在回答中提到indexed db很慢。它的速度非常慢以至于会被注意到吗? indexed db能存储图像和多媒体吗? 你会建议哪个最好的indexed db包装器用于chrome应用程序? - Chetan
1
它不是特别慢,但是可以察觉到。例如,我创建了一个应用程序。在应用程序启动期间,服务器通过websocket向客户端发送了一个80 mb大小的对象数组,需要4秒钟,然后我将此数组存储到indexeddb中,需要6秒钟。实际上并不那么糟糕。只有当您想要存储大量数据时才会注意到,但是您可以使用webworker来完成此任务。 请参见基准测试:[链接](http://nparashuram.com/IndexedDB/perf/)是的,您可以将图像和媒体存储为blob。有相关的教程。 - kailniris
当我开始使用indexedDB时,我正在寻找一个好的包装器,但我没有找到任何适合我的需求,所以我自己创建了一个。这不是什么大不了的事情,只需要创建一些函数来存储数据、存储批量数据、截断对象存储等等。添加一些错误处理,你就完成了,代码不超过500行。但是有很多包装器,甚至是好的包装器。我的主要问题是这些项目已经不再维护,我不喜欢4年前未维护的代码。 - kailniris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接