使用localstorage保存应用程序状态

时间:2013-04-23 15:37:47

标签: javascript performance

关于使用本地存储保存应用状态的快速问题。我即将开始使用iOS网络应用程序,我想知道这些模型中是否有任何优点或缺点。此外,将应用程序状态的每个微小变化保存到本地存储中是否有任何重大的性能影响?

1号

将整个app状态对象作为JSON字符串保存到单个本地存储密钥值对。

var appstate = {
    string: 'string of text',
    somebool: true,
    someint: 16
}
localStorage.setItem('appState', JSON.stringify(appstate));

2号

将应用程序状态的每个变量保存到本地存储中的自己的键值对。

var appstate = {
    string: 'string of text',
    somebool: true,
    someint: 16
}
localStorage.setItem('string', appstate.string);
localStorage.setItem('bool', appstate.somebool);
localStorage.setItem('int', appstate.someint);

2 个答案:

答案 0 :(得分:4)

我认为单独存储值可能更有效的唯一原因是,如果您预期值会彼此独立地变化。如果它们是单独存储的,则可以刷新一组值而不触及另一组值,因此可以更好地处理值到期。例如,如果somebool经常更改但其余部分没有更改,则最好单独存储它。将具有类似到期和波动性的数据组合在一起。

否则,如果您只想保存整个应用程序状态,我认为单个字符串就可以了。

答案 1 :(得分:3)

考虑读取与写入(更改)。对于频繁的读取,它并不重要,因为JavaScript对象是具有常量(O(1))响应时间的哈希(参见Javascript big-O property access performance)。对于写作,正如可空性所说,存在差异。对于单对象设计,如果最终在对象中有大量(或大型)属性,频繁写入可能会变慢。