Я создаю приложение Railo, которое работает с большим количеством данных JSON, отправляемых туда и обратно через Ajax. Я нашел возможность оптимизировать его производительность, но я хотел бы услышать несколько советов от сообщества, прежде чем я займусь этим.
Вот хороший пример ситуации.
У меня есть действие на сервере, которое запрашивает набор ответов на заявки, сериализует их в JSON, а затем возвращает их в мой javascript-интерфейс, который затем анализирует и отображает некоторый HTML-код. Формат, в котором Railo возвращает JSON, является знакомым двухузловым объектом:
{"COLUMNS":["one","two","three",...],"DATA":["value","value","value",...]}
Я написал функцию, которая использует underscore '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;
});
};
Это хорошо справляется с работой, однако производительность не очень хорошая! Даже с такими быстрыми интерпретаторами js, как в webkit и firefox, эта функция часто составляет 75% времени обработки в функциях. это называется, особенно когда наборы данных большие. Хотелось бы узнать, насколько я мог бы улучшить, перенеся эту обработку на сервер, но у меня не хватает вариантов cfml / cfscript, чтобы написать эффективную версию этого.
То, что мне нужно, чтобы вернуться с сервера, тогда будет выглядеть так:
[
{"one":"value","two":"value","three":"value"},
{"one":"value","two":"value","three":"value"}.
...
]
Я понимаю, что формат, используемый SerializeJSON, создает ответы, которые намного меньше и, следовательно, используют меньшую пропускную способность для отправки. Вот тут-то и начинаются эксперименты. Мне бы хотелось посмотреть, как это влияет на мое приложение, чтобы делать вещи по-другому!
кто-нибудь написал сериализатор JSON, который может возвращать данные в этом формате?