【发布时间】:2011-09-08 22:03:14
【问题描述】:
我正在测试不同的浏览器如何从本地存储读取/写入大量数据。示例数据是 1500 条客户记录,其中包含每个人的一组数据(名字、姓氏、他们的位置、类型等的一些 ID)。测试应用程序基于 GWT 平台构建。
我注意到,在从本地存储(而不是从 Web 服务器)加载数据后,IE8、IE9、Chrome 的性能至少提高了 30%。只有 Firefox (5.0) 使结果恶化(慢了大约 30%)。远程网络服务器用于将某种现实带入实验。 浏览器之间的差异在小数据块(100-200 条记录)上几乎看不到,结果时间也差不多。但大量数据揭示了问题所在。
我发现在 mozilla 支持网站上提到了这个问题 - https://support.mozilla.com/en-US/questions/750266 但仍然没有解决方案或解决方法。
Javascript 分析显示对 GWT StorageImpl.java 类中实现的函数的调用
function $key(storage, index){
return index >= 0 && index < $wnd[storage].length ?
$wnd[storage].key(index) : null;
}
在执行过程中占用大部分时间。这实际上是 GWT 中的 storage.getItem(key) 调用。
为了避免这种频繁调用,例如,我宁愿通过一次调用将存储内容转换为地图,这可能有助于我节省花在 Firefox 的缓存 I/O 操作(如果有的话)上的时间。但是 Storage 接口(@987654322@)只包含 getItem() 函数来接收来自存储的任何内容。
关于如何强制 Firefox更快地运行有什么想法吗?
附:也许对某人有用:我使用插件 SQLite 管理器找到了 FF 本地存储内容,并从默认内置数据库的下拉列表中加载 webappstore.sqlite 数据库。
【问题讨论】:
标签: javascript html firefox gwt local-storage