/ / JSON analisando no servidor vs. analisando o lado do cliente - json, performance, node.js, parsing

Análise JSON no servidor vs. análise do lado do cliente - json, performance, node.js, parsing

Eu estou escrevendo um aplicativo de nó e precisa servidor um monte de dados do mapa JSON. Em ordem para os dados para mostrar corretamente, ele deve ser analisado.

Agora eu estou querendo saber se é melhor analisar o servidor (e enviar este objeto de dados analisados ​​para o cliente) ou enviar o json puro e fazer com que ele seja analisado no lado do cliente após a chamada do ajax.

Minha maior preocupação em fazer isso no servidor é que muitas consultas simultâneas podem atrasar tudo para um monte de pessoas.

Opção de código do lado do servidor:

var data = [];
db.simple_query([{ask: COMPLEX QUERY TO RETURN DATA AS JSON }], function(err, geo_data){
if (err) {
callback(err);
}
else{
data.push(JSON.parse(geo_data.rows[0].row_to_json));
callback();
}
});

Opção de código do lado do cliente:

$.ajax({
type: "GET",
url: url,
success: function(data){
if (data){
$.each(data, function(i, geo){
L.geoJson(JSON.parse(geo)).addTo(map);
});
}
},
error: function(data){
//Error Handling
}
});

Respostas:

4 para resposta № 1

Realmente não importa. Comparado a um acesso a banco de dados (ou basicamente qualquer coisa que envolva atividade de rede ou disco), serializar / desserializar JSON é incrivelmente rápido. Não otimize demais as coisas que não precisam de otimização.

No entanto, se você quiser passar os dados para o cliente sem qualquer processamento no lado do servidor e Se você já tiver uma string JSON, seria inútil desserializá-la no servidor e, em seguida, serializá-la novamente para transmiti-la ao cliente, que terá novamente que desserializá-la.


2 para resposta № 2

Se este é um serviço que você pretende manter,Escala, ou suporte para avançar, então eu provavelmente iria w / análise no servidor. Se não e você está apenas bloqueando isso para algum curto prazo necessidade ou sendo tático por qualquer motivo, então eu apenas daria uma análise sobre o cliente . De qualquer maneira, espero que o impacto da análise / serialização JSON seja insignificante ... e é por isso que eu consideraria outros fatores ao tomar a decisão.

Se você for analisar o servidor, você será deixadoem uma boa posição por uma série de razões. Primeiro, você será capaz de fornecer um contrato melhor (s) para esses dados (por exemplo, decompor os dados em conjuntos coesos de responsabilidades. Ocultar detalhes vazios / feios. Reduzir e podar o tamanho da carga para o que faz sentido para você Segundo, se você optar por usar um provedor de dados diferente ou as mudanças do provedor de dados subjacente ou desejar alterar qualquer um dos detalhes da implementação (por exemplo, seu algoritmo de análise), você poderá proteger essas decisões do (s) cliente (s). opções no servidor para escalar ou otimizar o desempenho do serviço são muitas (por exemplo, cache, otimização de análise, máquinas adicionais, etc) e esses detalhes de implementação também podem ser ocultados dos consumidores.

Tudo somado, eu forneceria um bom conjunto de contratose fazer o lado do servidor de análise, a fim de esconder meus detalhes de implementação, a menos que as circunstâncias (por exemplo, curto prazo, este é um protótipo) ditado de outra forma.