Je construis une application Railo qui traite beaucoup de données JSON envoyées par Ajax. J'ai identifié une opportunité d'optimiser sa performance, mais j'aimerais avoir quelques conseils de la communauté avant de m'y attaquer.SerializeJSON est utilisé pour renvoyer un tableau de structures à la place d'un objet JSON avec des nœuds COLUMNS et DATA?
Voici un bon exemple de la situation.
J'ai une action sur le serveur qui interroge un ensemble de réponses d'enchères, les sérialise en JSON, puis les renvoie à mon javascript sur le frontal, qui analyse ensuite et rend du HTML. Le format dans lequel Railo renvoie le JSON est l'objet à deux nœuds familier:
{"COLUMNS":["one","two","three",...],"DATA":["value","value","value",...]}
j'ai écrit une fonction qui utilise la fonction carte de underscore() pour convertir ce format en un tableau d'objets avec des noeuds nommés:
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;
});
};
Ceci fait le travail bien, mais les performances ne sont pas très bonnes! Même avec les interprètes js rapides comme ceux de webkit et firefox, cette fonction représente souvent 75% du temps de traitement dans les fonctions qui l'appellent, en particulier lorsque les jeux de données sont volumineux. Je voudrais voir combien d'amélioration j'obtiendrais en déchargeant ce traitement au serveur, mais je n'ai pas tout à fait les côteles de cfml/cfscript pour écrire une version efficace de ceci.
Ce que je dois revenir à partir du serveur, puis, ressemblerait à ceci:
[
{"one":"value","two":"value","three":"value"},
{"one":"value","two":"value","three":"value"}.
...
]
Je comprends que le format utilisé par SerializeJSON crée des réponses qui sont beaucoup plus petites et donc d'utiliser moins de bande passante pour envoyer. C'est là que l'expérimentation entre en jeu. J'aimerais voir comment cela a un impact sur mon application pour faire les choses différemment!
quelqu'un a écrit un Serializer JSON qui peut retourner des données dans ce format?
Qu'est-ce qui ne va pas chez moi? –
Cette correction a triplé les performances de toArgsObject(). Je suis embarrassé! Par curiosité, cependant, j'aimerais savoir si quelqu'un a une réponse à ma question initiale –