我有一个网上文件查询/查询系统,供客户使用。 该系统的一部分是查询系统,使客户能够查找文件中所载的一个术语。 我拿到必要的搜索数据文档,但需要装上大量数据,从8至20秒到所有数据。 数据分为40-100个档案,视需要检索哪些文件而定。 每份档案都在40-350kb处。
此外,这一申请必须能够在当地档案系统和网络服务器上运行。
当网页装满时,我可以编制一份清单,列出我需要填写的搜索数据文档。 整个清单必须装上,才能认为网页有效。
在这样做之前,请看一下我现在如何做。
在我知道整个网页装满后,我称“负荷工作”职能。
function loadData(){
var d = new Date();
var curr_min = d.getMinutes();
var curr_sec = d.getSeconds();
var curr_mil = d.getMilliseconds();
console.log("test.js started background loading, time is: " + curr_min + ":" + curr_sec+ ":" + curr_mil);
recursiveCall();
}
function recursiveCall(){
if(file_array.length > 0){
var string = file_array.pop();
setTimeout(function(){$.getScript(string,recursiveCall);},1);
}
else{
var d = new Date();
var curr_min = d.getMinutes();
var curr_sec = d.getSeconds();
var curr_mil = d.getMilliseconds();
console.log("test.js stopped background loading, time is: " + curr_min + ":" + curr_sec+ ":" + curr_mil);
}
}
What this does is processes an array of files sequentially, taking a 1ms break between files. This helps prevent the browser from being completely locked up during the loading process, but the browser still tends to get bogged down by loading the data. Each of the files that I m loading look like this:
AddToBookData(0,[0,1,2,3,4,5,6,7,8]);
AddToBookData(1,[0,1,2,3,4,5,6,7,8]);
AddToBookData(2,[0,1,2,3,4,5,6,7,8]);
如果每一行都是功能要求,则将数据输入阵列。 “ToBookData”的职能只是:
function AddToBookData(index1,value1){
BookData[BookIndex].push([index1,value1]);
}
这是现有的制度。 在填满所有数据之后,“AddToBookData”可被称作100 000+倍。
我的数字是相当低的,因此我写了一封信来进行测试。 j 载有上述所有职能要求的文件,并处理该档案,使之变成一个大阵列,与图书Data正在创建的数据结构相同。 我不是把所有职能都称作旧制度,而是做以下工作:
var test_array[..........(data structure I need).......]
BookData[BookIndex] = test_array;
我预计会看到业绩提高,因为我取消了上述所有职能要求,这种方法需要稍多的时间来建立准确的数据结构。 我应该指出,“抗议”在我真正的世界考验中占据了略超过90 000个元素。
似乎两种装载数据的方法大致相同。 令我感到惊讶的是,由于我预计第二种方法不需要时间,因为数据结构是在手头之前建立的。
请指出: