我正在工作的网站,有一个非常长的加载时间(~10秒满载)。该页面正在对页面加载中的数百项进行大约20个单独的服务器调用,并使用JQuery DataTables插件来显示它们。页面将加载一半,然后在每次调用时等待服务器的响应,然后将jquery绑定到结果。现在,数据不是存储在页面源上,它的唯一证据是在响应头中(我不知道这类东西存储在哪里。)
我提出的一个解决方案是在发送页面加载之前在服务器端执行所有服务调用,然后将datatable jquery绑定到html表。由于数据无论如何都是加载的,我将删除20个服务器请求并简化代码。
我的问题是性能;将数据添加到html源会使页面加载/执行速度比将数据存储到浏览器所在的位置慢吗?
$().SPServices({
operation: "GetListItems",
async: false,
listName: listCalendarName,
CAMLViewFields: camlFields,
CAMLQuery: camlQuery,
completefunc: function (xData, Status) {
var data = $(xData.responseXML).SPFilterNode("z:row").SPXmlToJson({
mapping: {
ows_ID: { mappedName: "ID", objectType: "Counter" },
ows_resource_title: { mappedName: "Title", objectType: "Text" }
//removed extra field definitions
},
removeOws: true
});
self.Directory(data);
}
});
这是它正在进行的调用类型的一个例子。响应采用XML格式,并将其转换为JSON。
发布于 2014-01-03 00:18:02
在不知道具体情况的情况下,我会大致回答。如果你提供细节,我可以指出更好的解决方案。
如果您需要特定的指针,请告诉我是否有帮助。
更新: XML响应也会膨胀(很多额外的标记),我建议考虑两件事。
看看是否可以发送普通的JavaScript数组(搜索"datatables Ajax源数据(数组数组)“,由于缺乏信誉点,我无法提供链接)。如果所有数据都格式良好(每个数组中的元素数相同)和
尝试通过此选项render.html推迟html呈现。
https://stackoverflow.com/questions/20894242
复制相似问题