Javascript 使用localstorage保存应用程序状态

Javascript 使用localstorage保存应用程序状态,javascript,performance,Javascript,Performance,只是一个关于使用本地存储保存应用程序状态的快速问题。我即将开始开发一款iOS网络应用程序,我想知道这两种机型是否都有优势或劣势。此外,将应用程序状态的每一个微小更改保存到本地存储中是否会对性能造成重大影响 第一 将整个应用程序状态对象作为JSON字符串保存到单个本地存储键值对 var appstate = { string: 'string of text', somebool: true, someint: 16 } localStorage.setItem('appS

只是一个关于使用本地存储保存应用程序状态的快速问题。我即将开始开发一款iOS网络应用程序,我想知道这两种机型是否都有优势或劣势。此外,将应用程序状态的每一个微小更改保存到本地存储中是否会对性能造成重大影响

第一 将整个应用程序状态对象作为JSON字符串保存到单个本地存储键值对

var appstate = {
    string: 'string of text',
    somebool: true,
    someint: 16
}
localStorage.setItem('appState', JSON.stringify(appstate));
二号 将应用程序状态的每个变量保存到本地存储器中它自己的键值对中

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);

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


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

考虑读与写(更改)。对于频繁读取,这其实并不重要,因为JavaScript对象是响应时间恒定(O(1))的哈希(请参阅)。对于写操作,正如nullability所说,这是有区别的。对于单对象设计,如果对象中有大量(或大尺寸)属性,频繁写入可能会变慢。

为什么要单独保存所有的小块和小块?添加另一个属性
foo
时会发生什么情况?数字1更干净,因为您只需保存/加载1项。我很确定,就性能而言,所有部分的总和都比单个项目慢。@ToniToniChopper,这是有道理的。不管怎样,它都将是一个相当简单的应用程序。
JSON.stringify()
JSON.parse()
是否存在性能问题?不,不用担心,特别是如果它是一个简单的应用程序。