javascript - 使用 JSON 对象与 localStorage/sessionStorage/IndexedDB/WebSQL/等?

标签 javascript json browser cross-browser local-storage

我有一个 Web 应用程序,它在启动时会获取几十个项目。所有这些项目都是 JSON,小于 1kb。

现在有许多存储选项,如问题中所示。

我正在考虑将这些对象存储在浏览器 JS 的一个变量中。我真的不明白为什么要使用这些浏览器存储?

那么使用任何基于浏览器的存储而不是 JS 中的变量的原因是什么。 可能是从某个数据大小开始,最好使用浏览器存储,例如从 100kb 开始,最好不要使用 JS 变量。

var myModel = {}

注意

每次用户进入应用程序时,他都会从服务器获取新内容。内容对于缓存而言过于实时。 `

最佳答案

localStorageglobalStoragesessionStorage:

这些特性在已经实现了“Web Storage”的浏览器中都有,它们都指的是一种HashMap,一种字符串键和字符串值之间的映射。但生活是不同的。一旦事件页面关闭,sessionStorage 将被清除,但 localStorage 是永久的。( MDN DOM Storage guide )

  • globalStorage 有一点,自 Gecko 1.9.1 (Firefox 3.5) 起已过时,自 Gecko 13 (Firefox 13) 起不再支持,从那时起我们应该使用 localStorage 。这两者之间的区别只是 HTML5 范围支持(方案 + 主机名 + 非标准端口)。

这些可能对您有用:

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

-离线编程。

-缓存大对象

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


IndexedDB:

IndexedDB is useful for applications that store a large amount of data (for example, a catalog of DVDs in a lending library) and applications that don't need persistent internet connectivity to work (for example, mail clients, to-do lists, and notepads)

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

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

您的应用是否需要启用离线功能?如果需要,请考虑使用 IndexedDB。

您的应用是否需要持续的互联网连接?如果是,它仍然是一个选项,基于其他因素。


所以除了你不需要的离线工作,我猜,因为正如你所说:

The content is too realtime for caching.

这些具有一些功能,例如共享对象和管理大量数据,您应该由您来决定。

关于javascript - 使用 JSON 对象与 localStorage/sessionStorage/IndexedDB/WebSQL/等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808052/

相关文章:

javascript - 水平子菜单在iPhone上不起作用(在Chrome和Safari上可用)

javascript - Bootstrap Collapse 不起作用,但在 JSFiddle 中有效

javascript - 使用普通 JavaScript 访问嵌套在 JSON 对象中的已知名称的属性值

debugging - 清除 IE11 开发人员工具中的 "Network"选项卡

javascript - React 从其他文件调用 fetch 方法并在成功后执行操作

javascript - 在 Javascript/JQuery 中返回一个 div 定位的 x 值

javascript - Meteor 将 JSON 导入集合

java - 如何使用 Java 创建 JSON 文档?

javascript - 设置 document.domain 是否适用于所有(大多数)浏览器?

ipad - "Good for Enterprise"中的安全浏览器是否支持SQLite?