Pergunta

I construiu um portal de notícias on-line antes de que está funcionando bem para mim, mas alguns dizem que a página inicial é lento um pouco. Quando eu penso nisso eu vejo uma razão pela qual isso é.

A página inicial do site exibe

  1. Em destaque
  2. notícia Mancha (sub-títulos
  3. Spots com fotos
  4. A maioria ler notícias (como títulos)
  5. A maioria das notícias comentou (como títulos)
  6. 5 títulos de notícias de cada categoria de notícias (11 no total, por exemplo, esportes, economia, local, de saúde etc ..)

Agora, cada um destes são consultas separadas para o DB. Eu tenho TableAdapters conjuntos de dados e tabelas de dados (dados padrão acces cenários) para para as manchetes, eu chamo a lógica de negócios na minha classe notícias que retorna o DataTables por TableAdapter. a partir daí, eu use a tabela de dados por apenas obrigatório para os controles ou (na maioria das vezes) os convertidos objeto a uma lista (de notícias), por exemplo, e eu consumi-lo de lá.

Fazer isso para cada um dos acima parece funcionar bem no entanto. Pelo menos ele não coloca uma carga enorme. Mas me faz pensar se há uma maneira melhor.

Por exemplo, o projeto que eu descrevi acima é um web site altamente dinâmico, são inseridos notícias assim que chegarem a partir de agências de 24 horas non-stop. assim cache neste caso não pode bom som. mas, por outro lado, eu sei que tenho um outro projecto semelhante para um jornal local. O site será atualizado somente uma vez por dia. Nesse caso: Eu só pode executar uma consulta, que iria retornar uma tabela de dados contendo todos os itens de notícias inseridas para hoje, em seguida, consulta que tabela de dados e colocar manchetes, manchas e outros itens para seus respectivos lugares no site? Ou há uma volta melhor alternativa? Eu apenas vagar como outras pessoas realizar tarefas semelhantes na forma mais eficiente.

Foi útil?

Solução

Eu acho que você deve usar o Firebug para descobrir o que elementos estão tendo tempo para carga. Às vezes, grandes imagens pode arruinar o show (e o tamanho da imagem na tela nem sempre é relativo a sua dimensão download).

Em segundo lugar você pode fazer o download do Yahoo plugin do Firefox YSlow e investigar se você tiver quaisquer scripts de desaceleração.

Mas Firebug deve dar-lhe a melhor avaliação. Após o carregamento Firebug, clique no separador 'Net' para ver o tempo de carregamento de cada elemento na página.

Outras dicas

Se você não tem um desempenho ruim, o primeiro passo é começar a perder tempo. Perfil seu código. Saiba exatamente por isso que é lento. É a desaceleração na transmissão da página, tornando-o, ou realmente dinamicamente gerando a página? É uma única consulta demorando muito?

Saiba exatamente onde o gargalo é e atacar o problema em seu coração.

O cache é também uma idéia muito boa, mesmo nos casos em que o conteúdo é atualizado com bastante rapidez. Enquanto o seu mecanismo de cache é inteligente, você ainda vai economizar muito tempo de geração. No caso de um portal de notícias ou um blog em oposição a um fórum, o seu provável para melhorar o desempenho muito com um sistema de cache.

Se você achar que seus atrasos vêm do DB, verifique as tabelas, verifique se eles estão corretamente indexadas, agrupado, ou qualquer outra coisa que você precisa, dependendo da quantidade de dados na tabela. Além disso, se você estiver usando consultas dinâmicas, tente procedimentos armazenados em seu lugar.

Se você quiser se várias consultas feitas em uma solicitação de banco de dados, você pode. Desde inicialmente você não vai estar mostrando todos os dados até que todas as consultas são feitas de qualquer forma, e impedindo quaisquer outras questões, você vai pelo menos ser economizando tempo sobre como acessar o DB novamente para cada consulta individual. DataSets realizar um conjunto de tabelas, que podem ser gerados por várias consultas na mesma solicitação.

ASP.NET fornece um mecanismo muito bom já para armazenamento em cache (HttpContext.Cache) que você pode envolver em torno e torná-lo mais fácil para você usar. Desde que você pode definir um tempo de vida em seus objetos em cache, você realmente não precisa se preocupar com artigos e título não estar em dia.

Se você estiver usando WebForms para este site, desativar ViewState para os controles que realmente não precisa deles apenas para tornar a página um pouco mais rápido para carregar. Para não mencionar a abundância de outros ajustes e mudanças para fazer um carregamento de página mais rápido (gzipping, minimizando roteiros etc.)

Ainda assim, antes de fazer nada disso, fazer como Anthony sugeriu o perfil de seu código. Descubra o que o verdadeiro problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top