【问题标题】:localStorage: Storing data individually VS one big String?localStorage:单独存储数据VS一个大字符串?
【发布时间】:2017-06-15 04:31:24
【问题描述】:

我想在 localStorage 中保留多个计数。 存储和检索几个小数据还是一个大数据更有效?

例如。这个:

localStorage.setItem('id1', tally1);
localStorage.setItem('id2', tally2);

for(var i=0; i<tallyIds.length; i++){
    this.tallies.push(tallyIds[i], localStorage.getItem(tallyIds[i]));
}

或者这个:

localStorage.setItem('tallies', '[{"id1": tally1}, {"id2": tally2}"]');
this.tallies = JSON.parse(localStorage.getItem('tallies'));

我知道有些设备会定期自动清除 localStorage 中的一些数据。因此,单独存储每个可能是有利的,在这种情况下可能只有一些会丢失 - 但如果全部存储在一个大字符串中,那么如果/当设备决定清除它时,一切都会丢失。

但是,循环遍历整个列表(只有几百个项目)会慢很多吗?

【问题讨论】:

  • 我所做的是根据应用程序的需要,并为每个服务创建不同的对象。每个对象都与一项服务相关。该服务负责存储和检索数据。我只是使用服务而不是 getItem 和 setItem 来管理本地存储。并且它可以最小化对象的大小以满足一项服务的需要。

标签: javascript cordova typescript local-storage ionic2


【解决方案1】:

几乎可以肯定,您应该更喜欢将计数存储为单个键下的数组。如果 localStorage 被清除,则独立存储计数

一个。不太可能保存其中任何一个(例如,cmd localStorage.clear() 将清除所有内容) 湾。可能会导致令人困惑的情况,您不确定您的所有数据是否真的完整或只有部分数据丢失。

从好的方面来说,将计数存储为数组意味着您可以非常轻松地在其他操作中过滤、映射、排序和反转它们。

【讨论】:

    【解决方案2】:

    对于您的特定情况,将计数存储在一个 localStorage 键和值中可能会更容易(作为一个大字符串) 并使用 JSON 解析来重建您的对象,添加到它,然后再次对其进行字符串化。这比按每个计数将其拆分到不同的键要容易。

    如果你没有太多的数据层,你真的需要像 IndexedDB 这样的真正的本地数据库,那么在这种情况下,一个键和一个 JSON 字符串值可能就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多