Request muito grande! Como melhorar?

2 respostas
vinicius_roc

Boa tarde pessoal,

Estou com um grande problema. Tenho uma tela responsável por exibir varios gráficos que são carregados em javascript. Os dados dos mesmos vem do servidor e são muito grandes, pois temos uma linha por minuto, que em um mês serão 129600 registros, por items que vou exibir no gráfico. Um dos gráficos possuem 3 deles o que me da 388800 registros, para eu passar para JSON e devolver para o cliente.

Isso tem tomado um tempo grande, fazendo parecer inclusive que a tela esta travou e não trouxe nada. Para otimizar e aumentar a paciência do usuario, acredito que seria uma boa mostrar uma barra de progresso, para isso pensei nas sequintes soluções que não sei se são possivel de implementar.

1 - Faço várias requisições para o servidor que vai me retornando por blocos pequenos.
Pró: Após a primeira requisição, sei quantos registros tem e posso ir incrementando a barra de progresso
Contra: Muitas requisições para o servidor e consequentemente para o banco também

2 - Faço uma requisição só, porém conforme eu for processando eu ja vou enviando para o cliente.
Prós: Uma requisição só para o servidor e para o banco, e conforme vou respondendo para o cliente, também vou atualizando a barra de progresso.
Contra: Não identifiquei.

É possivel realizar a segunda opção? Caso não, o que acharam da primeira? Alguma solução melhor?

Muito Obrigado

2 Respostas

paulo1911

Olá amigo,

Talvez seja o caso de você estudar a possibilidade de gerar os dados de sumário no momento em que são gerados.

Vc pode criar uma tabela de sumário para inserir os dados de acordo com sua necessidade. Ex.: sumário diário de venda de produtos ou pedidos.

quando chega a requisição do pedido ou da venda do produto vc faz um inser em uma tabela com essa informação

faz um select na tabela de sumario para o dia atual

se não tem registro para o dia

faz insert da data(timestamp) do codigo do produto ou serviço e da quantidade

na segunda vez verifica se ja possui inser no dia para aquele produto naquela data
se tiver vc pega aquantidade atual na tabela e soma com a quantidade recebida na nova requisição

assim vc gera um sumário pré processado do seu relatorio ou grafico e fica mais facil vc transferir 1 linha Ex.:

{{“data”:“01/01/2013”,“idProduto”:“123”,“qnt”:“50”}, {“data”:“02/01/2013”,“idProduto”:“123”,“qnt”:“25”}}

pode ser menasl tb

{“data”:“01/2013”,“idProduto”:“123”,“qnt”:“75”}

fica dica

abç

vinicius_roc

Muito Obrigado Paulo,

Cheguei a pensar nessa possibilidade, realmente facilitaria, diminuiria a precisão dos dados, mas também o tempo de resposta. É algo que preciso estudar e discutir direto com o cliente.

Valew pela dica.

Criado 23 de abril de 2013
Ultima resposta 23 de abr. de 2013
Respostas 2
Participantes 2