我正在构建一个使用 HTML localStorage 的小项目。虽然我还没有接近 localStorage 的 5MB 限制,但我还是决定进行压力测试。
本质上,我将数据对象加载到单个 localStorage 对象中,直到它略低于该限制,并且必须请求设置和获取各种项目。
然后,我使用 javascript Date 对象和事件处理程序(将 get 和 set 绑定到 HTML 中的按钮并单击 =P)非正式地定时执行 setItem 和 getItem
性能非常糟糕,请求需要 600 毫秒到 5,000 毫秒,在更糟糕的情况下,内存使用量接近 200mb。这是在 MacOSX 上的带有单个扩展程序(Google Speed Tracer)的 Google Chrome 中。
在 Safari 中,它基本上一直 > 4,000 毫秒。
Firefox 是一个惊喜,几乎没有超过 150 毫秒。
这些都是在基本上处于空闲状态的情况下完成的——没有 YouTube (Flash) 妨碍,标签不多(除了 Gmail),并且除了后台进程 + 浏览器之外没有打开任何应用程序。一旦出现内存密集型任务,localStorage 也会相应地减慢速度。FWIW,我正在运行 2008 年末的 Mac -> 2.0Ghz Duo Core 和 2GB DDR3 RAM。
===
所以问题:
- 有没有人针对各种不同的键和值大小以及不同的浏览器对 localStorage get 和 set 进行了各种基准测试?
- 我假设 Firefox 和其余的延迟和内存使用量的巨大差异是 Gecko vs Webkit 问题。我知道可以通过深入研究这些代码库来找到答案,但我绝对想知道是否有其他人可以解释有关在这两个引擎上实现 localStorage 的相关细节,以解释跨浏览器在效率和延迟方面的巨大差异?
不幸的是,我怀疑我们能否解决它,但至少可以了解浏览器在当前状态下的局限性。
谢谢!