[英]Mobile-Web-App: keeping huge data in json-string vs. object vs. localstorage
[英]Using a JSON object vs. localStorage/sessionStorage/IndexedDB/WebSQL/etc.?
我有一个Web应用程序,启动时会得到几十个项目。 所有这些项目都是JSON,并且小于1kb。
现在,在“问题”中可以看到许多存储选项。
我当时只是想将这些对象存储在浏览器JS的变量中。 我真的不明白为什么我要使用这些浏览器中的任何一个?
那么,为什么要使用任何基于浏览器的存储来代替JS中的变量呢? 可能是从某种数据大小来看,最好使用浏览器存储,例如从100kb开始,最好不要使用JS变量。
var myModel = {}
注意
每次用户进入应用程序时,他都会从服务器获取新鲜内容。 内容太实时,无法缓存。 `
localStorage
, globalStorage
和sessionStorage
:
这些功能已在实现“ Web存储”的浏览器中提供,它们都引用一种HashMap,即字符串键和字符串值之间的映射。 但是生活却不同。 一旦活动页面关闭, sessionStorage
将被清除,但localStorage
是永久性的。( MDN DOM Storage guide )
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.