我正在构建一个 Railo 应用程序,它处理通过 Ajax 来回发送的大量 JSON 数据。我发现了一个优化其性能的机会,但在我解决它之前,我想听听社区的一些建议。
这是一个很好的例子。
我在服务器上有一个操作,它查询一组投标响应,将它们序列化为 JSON,然后将它们返回到前端的我的 javascript,然后解析并呈现一些 HTML。Railo 返回 JSON 的格式是熟悉的两节点对象:
{"COLUMNS":["one","two","three",...],"DATA":["value","value","value",...]}
我编写了一个函数,它利用下划线的 map() 函数将此格式转换为具有命名节点的对象数组:
function toArgsObject(data,columns) {
return _.map(data, function(w){
var q = {};
for (var i=0; i < w.length; i++) { eval("q."+columns[i]+" = w[i]"); };
return q;
});
};
这可以很好地完成工作,但是性能不是很好!即使使用像 webkit 和 firefox 中的 swift js 解释器,这个函数通常占调用它的函数的 75% 的处理时间,尤其是当数据集很大时。我想看看通过将此处理卸载到服务器会得到多少改进,但我没有 cfml / cfscript 印章来编写一个有效的版本。
那么,我需要从服务器返回的内容如下所示:
[
{"one":"value","two":"value","three":"value"},
{"one":"value","two":"value","three":"value"}.
...
]
我知道 SerializeJSON 使用的格式创建的响应要小得多,因此使用更少的带宽来发送。这就是实验的用武之地。我想看看它如何影响我的应用程序以不同的方式做事!
有没有人写过可以以这种格式返回数据的 JSON 序列化器?