鉴于JSON数据是一个50 000到300 000条目词典。
鉴于我在移动设备上构建了一个混合应用程序(HTML5 / JS / CSS),设备潜力很慢。
我将数据作为数组获取,但由于我的用户应该经常与数据交互,为了速度和性能,
我应该使用,查询,编辑array
这样的(注意:我知道目标词=“动物园”):
var dict = [
{ "word": "acadia", "fr": ... },
{ "word": "acaria", "fr": ... },
{ ... },
...
]
但我没有索引,我只有值“zoo”来获取{ "word":"zoo"}
对象。
或者我应该使用,查询,编辑object
这样的:
var dict = {
"acadia":{ "word": "acadia", "fr":... },
"acaria":{ "word": "acaria", "fr":... },
"...": { ... },
...
}
答案 0 :(得分:1)
<强>阵列强>
对象比数组慢。
写入对象的代码比写入数组的代码要长。
当我加载大量数据时,我按如下方式压缩响应:
obj={
info:{en:0,fr:1,es:2,it:3},
data:[
['acadia','... ','...'],
['acaria','... ','...'],
]
}
//access
var wordNumber=0,lng=obj.info.en;
obj.data[wordNumber][lng];
但它也取决于你如何构建/索引所有内容。
所以也许
obj{
'acadia':['fr...','es...','it...'],
'acaria':['fr...','es...','it...'],
}
// access:
var word='acadia',lng=0;
var word=obj[word]?obj[word][lng]:'word does not eist';
更快,因为它可以直接访问...
但没有重复项,也没有不允许的字符。你需要检查一下。
如果fr是法语单词,那就不是真的......如果我错了,请纠正我。然后我编辑代码。
btw ..我在ipad1上加载了一个20mb的json文件,没有问题...它包含了20k图像的exif数据。它写得很糟糕......你可以使用cache.manifest
或{{1}永久存储它...并考虑到我的json文件编写得非常糟糕...如果使用数组,300k条目的字典应该是相同的大小。
但对于如此大的数据和如果你不断更新,你也应该能够使用一些服务器端语言和一个适当的数据库,只更新必要的数据。
修改强>
data.json
webSQL
然后将所有内容存储在webSQL数据库中.. 并使用..离线。
创建一个更小的jsonfile
{
info:['en','fr','it'],
data:[
['enword1','frword1','itword1'],
['enword2','frword2','itword2'],
//.....
]
}
然后使用{
info:['en','fr','it'],
data:[
['enword1,frword1,itword1'],
['enword2,frword2,itword2'],
//.....
]
}
字词不应包含split(',')
更小所以json文件非常小。
,
字词不应包含{
info:['en','fr','it'],
data:'enword1,frword1,itword1|enword2,frword2,itword2'
}
&amp; ,
|
但你需要测试brosser是否可以轻松处理。
你需要在filesize和插入所有这些单词所需的时间之间找到平衡点。