我正在构建一个使用HTML localStorage的小项目。虽然我没有接近localStorage的5MB限制,但我还是决定进行压力测试。
基本上,我将数据对象加载到单个localStorage对象中,直到它略低于该限制,并且必须请求设置和获取各种项目。
然后我定时执行setItem和getItem非正式using the javascript Date object和事件处理程序(绑定get并设置为HTML中的按钮,只需单击= P)
表现非常可怕,请求时间在600毫秒到5,000毫秒之间,并且在更严重的情况下,内存使用量接近200mb。这是谷歌Chrome浏览器中的一个扩展程序(Google Speed Tracer),位于MacOSX上。
在Safari中,它基本上都是> 4,000毫秒。
Firefox令人惊讶,几乎没有超过150毫秒。
这些都是基本上处于空闲状态 - 没有YouTube(Flash)阻碍,没有多少标签(只有Gmail),除了后台进程+浏览器之外没有应用程序打开。一旦内存密集型任务弹出,localStorage也会按比例放缓。 FWIW,我正在运行2008年末的Mac - > 2.0Ghz Duo Core,配备2GB DDR3内存。
===
所以问题:
不幸的是,我怀疑我们是否能够解决它,但是越接近它就能理解浏览器在当前状态下的局限性。
谢谢!
答案 0 :(得分:2)
浏览器和版本成为一个主要问题。问题是,虽然有所谓的“基于Webkit”的浏览器,但他们也添加了自己的补丁。有时它们会进入主Webkit存储库,有时却不会。关于版本,浏览器始终是移动目标,因此如果您使用测试版或每晚版本,此基准测试可能会完全不同。
然后有整体用例。如果您的用例不是常态,那么问题就不会那么明显,并且不太可能引起注意和解决。即使有补丁,浏览器供应商也有很多问题需要解决,因此有可能将其设置为另一个版本(同样,夜间版本可能会产生不同的结果)。
老实说,最好的做法是在适当的浏览器邮件列表/论坛上讨论这些结果,如果尚未解决的话。人们更有可能进行测试,看看结果是否匹配。