题
我有一个对象,该对象包含有关用户UI的数据。目前,数据以json的形式出现,我运行JSON.parse评估对象并相应地生成一些HTML。
我正在考虑将json字符串存储在本地会话存储(而不是本地存储)中,并在每次需要用新HTML更新UI时调用它。这样,如果用户在同一浏览器中打开另一个页面,则所有页面的所有HTML都将相同。
目前,该对象存储在内存中,并且用户在UI上的操作与对象的修改之间的交互快速运行。如果我将其序列化并存储在会话存储中,浏览器是否会将数据存储在RAM或硬盘驱动器中并减慢页面速度?
解决方案
摘自html5规范:
浏览上下文的生存期可能与实际用户代理进程本身的生存期无关,因为用户代理可能在重启后支持恢复会话。
这意味着浏览器可以将此信息存储到磁盘上。
性能将取决于特定于浏览器和特定于操作系统的实现。但是,获取此信息不太可能成为瓶颈。
其他提示
我做了这个小型测试FF 32,Chrome 37,IE11。只是为了好玩。 通用标签
FF
- 会话:830毫秒
- 内存:92毫秒
- 本地:1156毫秒
Chrome
- 会话:2852毫秒
- 内存:147毫秒
- 本地:2893毫秒
IE
- 会话:977毫秒
- 内存:81毫秒
- 本地:15062毫秒
完成测试后,浏览器窗口冻结了几秒钟,CPU +磁盘活动增加(由localStorage引起)。
Chrome
- 会话:2852毫秒
- 内存:147毫秒
- 本地:2893毫秒
IE
- 会话:977毫秒
- 内存:81毫秒
- 本地:15062毫秒
完成测试后,浏览器窗口冻结了几秒钟,CPU +磁盘活动增加(由localStorage引起)。
IE
- 会话:977毫秒
- 内存:81毫秒
- 本地:15062毫秒
完成测试后,浏览器窗口冻结了几秒钟,CPU +磁盘活动增加(由localStorage引起)。
完成测试后,浏览器窗口冻结了几秒钟,CPU +磁盘活动增加(由localStorage引起)。
不隶属于 StackOverflow