我有一个网络应用程序,可以在启动时获取几十个项目。所有这些项目都是JSON,小于1kb。
现在有许多存储选项,如问题所示。
我在考虑将这些对象存储在浏览器JS中的变量中。我真的不明白为什么我要使用这些浏览器存储?
那么使用任何基于浏览器的存储而不是JS中的变量是什么原因。 可能是从某个数据大小开始,最好使用浏览器存储,例如,从100kb开始,最好不要使用JS变量。
var myModel = {}
注意
每次用户进入应用程序时,他都会从服务器获取新鲜内容。内容对于缓存来说太实时了。 `
答案 0 :(得分:9)
localStorage
,globalStorage
和sessionStorage
:
这些功能已在已实现“Web存储”的浏览器中准备就绪,它们都引用了一种HashMap,即字符串键和字符串值之间的映射。但生活是不同的。关闭活动页面后,sessionStorage
将被清除,但localStorage
是永久性的。(MDN DOM Storage guide)
这些对您有用:
- 在您网站的不同网页之间共享您的对象。
- 离线编程。
加载大型对象
- 或者只要您需要本地持久存储空间。
<强>索引资料强>:
IndexedDB对于存储大量数据的应用程序(例如,借阅库中的DVD目录)和不需要持久Internet连接的应用程序非常有用(例如,邮件客户端,待办事项列表和记事本)
根据MDN的这句话,您可以轻松找到关于使用localStorage
的答案,如果您不知道IndexedDB
是否对您有用,请回答以下问题:< / p>
您是否在客户端存储了大量数据?如果是,请考虑使用它。
您的应用是否需要启用离线功能?如果是,请考虑使用IndexedDB。
您的应用是否需要持久的互联网连接?如果是,则根据其他因素,它仍然是一个选项。
因此,除了你不需要它以外的工作,我猜,因为正如你所说:
内容对于缓存来说太实时了。
它们具有一些功能,如共享对象和管理大量数据,您应该自行决定。
答案 1 :(得分:2)
localStorage和sessionStorage正在解决缓存问题;把它们想象成饼干。你说你不想要缓存,所以你可以忽略它们。
JavaScript对象的行为基本上类似于O(1)查找表(请参阅How is a JavaScript hash map implemented?,并确保您同时阅读前两个答案,因为两者都有一些有用的内容),并且没有最大内存限制我知道,或者另一个解决方案成为更好的选择
我能想到你应该为在IndexedDB中插入数据的额外步骤而烦恼的唯一原因是,如果你需要在不是你正在使用的对象键的字段上进行O(1)查找。