3

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

1号

将整个应用状态对象作为 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);
4

2 回答 2

4

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

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

于 2013-04-23T15:50:41.480 回答
3

考虑读取与写入(更改)。对于频繁读取,这并不重要,因为 JavaScript 对象是具有恒定 (O(1)) 响应时间的哈希(请参阅Javascript big-O 属性访问性能)。对于写入,正如可空性所说,存在差异。对于单对象设计,如果对象中包含大量(或大型)属性,频繁写入可能会变慢。

于 2013-04-23T15:59:18.863 回答