在我的 Web 应用中,我应该使用哪种 HTML5 离线存储解决方案来存储用户笔记?

4
我正在编写一个Chrome应用,用户可以创建和编辑笔记(纯文本),我希望这些笔记可以离线保存。
我了解到HTML5提供了几种存储解决方案:localStorage、Web SQL DB、Application Cache。考虑到它们提供的大小、速度和使用便利性,请问您如何选择其中一种?
3个回答

6

localStorage是迄今为止最简单的解决方案,也是您应该在此任务中使用的方案。它允许您存储字符串,只要您的数据可以被表示为字符串-它就会工作(通常惯例是在保存之前将非字符串数据转换为JSON,然后再解析回来)。

WebDB是您的普通数据库。如果您需要在多个表格上运行复杂的查询,则可以使用它。对于存储笔记来说,这可能有些大材小用。

应用程序缓存是完全不同的东西,我不知道您如何在此应用它。它用于缓存HTML页面和资源。


本地存储是(在我看来)最好的选择。任意限制为5 MB(某些浏览器支持更多,但似乎这是最小值)。使用5 MB,您很可能不会因纯文本而用尽空间。 - Chuck Callebs
很好的分析,但我不同意使用localStorage来完成这个任务。对于任意数量的笔记,一个简单的表格包含(id,主题,正文)可能比读取/写入整个数组到localStorage键更合适。 - benzado
我认为localStorage非常适合,为什么不使用多个键,每个键对应一个笔记 - 每个键值对中包含一个JSON对象? - Chris
localStorage的操作是同步的,它们可能会阻塞UI,您认为在indexedDB上存储数据是否是一个好主意,如果支持它而不是在localStorage上?(是否有框架支持这一点?) - Saber

5

本地存储

这实际上是一个键值数据库,你可以使用它来代替cookie存储设置或其他用途,例如像服务器上的memcache组件。我个人会将其用于需要缓存的数据。

应用程序缓存

我认为你指的是通过清单文件进行缓存。这应该作为其他缓存使用的补充。这允许你在用户设备上缓存实际资源,例如图像、javascript文件和html文件,以便在他们断开与互联网的连接时,仍能在你的应用程序中使用它们。

Web SQL数据库

这是一个想要存储用户数据的数据库,你可能想将其用于在服务器上存储的SQL数据库中的数据。


1
根据此文档:https://developer.chrome.com/apps/offline_apps#saving-locally

打包应用程序无法使用Web SQL数据库或localStorage。WebSQL规范已被弃用一段时间,而localStorage同步处理数据(这意味着它可能很慢)。Storage API异步处理数据。

IndexedDB是推荐的存储机制。


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