2010-09-03 33 views
0

我现在正在开发包含印度尼西亚70,000多个村庄的JavaScript库(可访问http://bisbak.com/regina/),并且我构建了一个数据浏览器小部件。 Safari和Firefox中的一切都很好。但是,当使用Chrome浏览器时,当我选择一个区域(会自动加载村庄)时,它总是需要很长时间。检索区的村庄的代码是这样的:如何有效地选择/查询70,000个json数据?

for (n in data) { 
    var rs = []; 
    if (n is ok) rs.push(data[n]); 
    return rs; 
} 

数据与超过70,000村庄键JSON对象。

+0

请提供一个数据对象的小例子,您是否有可能通过字母或结果数量(分页)来细化查询? – BGerrissen 2010-09-03 12:59:43

+0

下面是如何村数据被存储: 数据:{ 1205060020:[ “Parbaju Toruan”,1], 1205060021:[ “Hapoltahan”,1],... } 第一个7位数实际上是作为一个区的村长的id,它被用作查询参数。 – Muslax 2010-09-03 13:52:59

回答

0

也许你应该只在必要时加载数据。

在你的情况下,你可以在启动时只加载Provinsi。当选择一个Provinsi项目时,您只能加载属于它的所有项目Kab./Kota;当一个Kab./Kota项目被选中,你只有全部Kecamatan属于它的项目,等等。

为了提高性能,您可以加载两个级别而不是一个级别。因此,当选择Provinsi项目时,您将加载属于它的所有Kab./Kota项目和Kecamatan。另外,缓存客户端和服务器端的数据。

+0

我想我已经这样做了。当一个Kecamatan(地区)被选中时,一组村庄只被建造/装载。我不知道在Chrome上运行时哪部分代码会降低查询速度。在Safari和Firefox上,我永远不会得到明显的延迟,即使我为每个对象添加属性(如人口,邮政编码等)。 – Muslax 2010-09-03 14:00:19

+0

@Muslax:接收*/regina/regina-desa-bps.js *的确占用了大部分时间(请参阅http://tools.pingdom.com/?url=http://bisbak.com/regina/)。 – Gumbo 2010-09-03 14:52:40

+0

是的,它是2MB或更多。但即使在离线测试中,Chrome浏览器也会超过8秒。有没有JS数据大小限制?或者你认为还有什么可以做的?谢谢。 – Muslax 2010-09-03 16:10:11