繁体   English   中英

使用JSON对象还是使用localStorage / sessionStorage / IndexedDB / WebSQL / etc?

[英]Using a JSON object vs. localStorage/sessionStorage/IndexedDB/WebSQL/etc.?

我有一个Web应用程序,启动时会得到几十个项目。 所有这些项目都是JSON,并且小于1kb。

现在,在“问题”中可以看到许多存储选项。

我当时只是想将这些对象存储在浏览器JS的变量中。 我真的不明白为什么我要使用这些浏览器中的任何一个?

那么,为什么要使用任何基于浏览器的存储来代替JS中的变量呢? 可能是从某种数据大小来看,最好使用浏览器存储,例如从100kb开始,最好不要使用JS变量。

var myModel = {}

注意

每次用户进入应用程序时,他都会从服务器获取新鲜内容。 内容太实时,无法缓存。 `

localStorageglobalStoragesessionStorage

这些功能已在实现“ Web存储”的浏览器中提供,它们都引用一种HashMap,即字符串键和字符串值之间的映射。 但是生活却不同。 一旦活动页面关闭, sessionStorage将被清除,但localStorage是永久性的。( MDN DOM Storage guide

  • 关于globalStorage有一点,自Gecko 1.9.1(Firefox 3.5)起已过时,而自Gecko 13(Firefox 13)起不受支持,因此我们应该使用localStorage 这两个之间的区别只是HTML5作用域支持(方案+主机名+非标准端口)。

这些对您可能有用:

-在您网站的不同页面之间共享对象。

-离线编程。

-缓存大对象

-或者每当需要本地持久存储时


IndexedDB

IndexedDB对于存储大量数据的应用程序 (例如,借阅库中的DVD目录)和不需要持久的Internet连接即可工作的应用程序 (例如,邮件客户端,任务列表和记事本)

根据MDN的引用,如果您不知道IndexedDB是否对您有用,则可以轻松找到有关使用IndexedDB答案,只需回答以下问题:

您是否在客户端上存储大量数据? 如果是,请考虑使用它。

您的应用需要离线吗? 如果是,请考虑使用IndexedDB。

您的应用是否需要持久的互联网连接? 如果是,则根据其他因素,它仍然是一个选择。


因此,我猜除了要在不需要的地方脱机工作外,因为您说过:

内容太实时,无法缓存。

它们具有共享对象和管理大量数据等功能,您应该自己决定。

localStorage和sessionStorage正在解决缓存问题; 把它们当作饼干。 您已经说过不想缓存,因此可以忽略它们。

JavaScript对象的行为基本上类似于O(1)查找表(请参阅如何实现JavaScript哈希映射? ,并确保您同时阅读了前两个答案,因为两者都有用处,所以都没有限制),并且没有最大内存限制我知道,或者说另一种解决方案成为更好的选择

我能想到的唯一原因是,如果需要在不是您正在使用的对象键的字段上进行O(1)查找,就应该麻烦在IndexedDB中插入数据的额外步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM