Request muito grande! Como melhorar?

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

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ç

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.