Pergunta

Eu tenho um site ASP.Net 2.0 habilitado para Ajax.Net.A hospedagem do site e do banco de dados está fora do meu controle, assim como o esquema do banco de dados.Nos testes de hardware eu controlo o desempenho do site, porém no hardware do cliente, há atrasos perceptíveis ao recarregar ou alterar páginas.

O que eu gostaria de fazer é tornar meu aplicativo o mais compacto e rápido possível ao entregá-lo.Uma ideia é definir datas de expiração para todos os recursos estáticos do site para que eles não sejam recuperados no carregamento da página.Por recursos quero dizer imagens, folhas de estilo vinculadas e arquivos de origem JavaScript.Existe uma maneira fácil de fazer isso?

Que outras maneiras existem de otimizar um site .Net?

ATUALIZAR:Executei o YSlow no site e as áreas em que estou sendo mais atingido são o número de JavaScript e folhas de estilo sendo carregadas (23 arquivos JS e 5 folhas de estilo).Todos, exceto um (a folha de estilo principal), foram inseridos pelo Ajax.net e Asp.Por que tantos?

Foi útil?

Solução

  1. Combinação de scripts em .net 3.5 SP1
  2. Melhores práticas para sites rápidos
  3. Compressão HTTP (gzip)
  4. Compactar JS/CSS (diferente da compactação http, minificar javascript)
    1. Compressor YUI
    2. Compressor .NET YUI

Meu melhor conselho é verificar o Conteúdo YUI.Eles têm ótimos artigos que falam sobre coisas como Sprites CSS e ter alguns ótimas bibliotecas javascript para ajudar a reduzir o número de solicitações o navegador está fazendo.

Outras dicas

Se você estiver usando o Firefox para testar seu site, você pode tentar uma extensão bacana do Firefox do Yahoo!chamado YLento.

Ele analisa suas páginas da web e fornece notas de A a F (A sendo o melhor e F o pior) para cada uma das melhores práticas, para sites de alto desempenho.Isso o ajudará a rastrear os elementos do seu site que você pode otimizar para ganhar velocidade.

Desative o viewstate por padrão; será uma diferença diurna e noturna até mesmo nas páginas mais simples.

Eu escrevi um postagem no blog sobre como melhorar o desempenho da página ASP.NET há alguns meses.Aqui estão algumas maneiras rápidas e fáceis -

  • Desativar estado de visualização
  • Desative a validação de eventos
  • Implemente a compactação HTTP gzip/deflate para reduzir o tamanho da resposta (número de bytes que o servidor deve enviar de volta ao cliente)
  • Tente otimizar/minimizar suas chamadas de banco de dados para cada solicitação

Acho que você realmente precisa obter alguns dados/telemetria reais do PerfMon do aplicativo durante a execução em produção para poder tomar uma decisão esclarecida sobre o que otimizar.

Como dica descartável, eu garantiria que seu aplicativo fosse implantado como um Liberar build e defina debug="false" no 'compilação'seção do seu web.config.

Você parece estar começando assumindo que o seu problema é o tamanho do download - esse pode não ser necessariamente o caso.Você deve fazer algumas experiências com seu site ASP.NET para determinar se há áreas em seu código que estão causando atrasos indevidos.Se descobrir que o tamanho do download não é o seu problema, você precisará encontrar maneiras de armazenar seus resultados em cache (examine o cache de saída, que é um recurso do ASP.NET) ou otimizar seu código.

De qualquer forma, o primeiro passo ao analisar um problema de desempenho é sempre para verificar suas suposições primeiro e depois decidir sobre um curso de ação.

Você poderia começar a analisar estratégias de cache.Arquivos estáticos como CSS (mesmo os compactados) e imagens (mesmo os otimizados) só devem precisar ser baixados uma vez pelo navegador por um período de tempo.

A combinação de Scirpt para AJAX já foi mencionada, mas não notei referência ao ScriptReferenceProfiler que a MS lançou no codeplex para ajudar a descobrir o que combinar.Mike Ormond tem um bom ponto de partida sobre isso.

Outra dica se você estiver fazendo muitos INSERTs em seu banco de dados é verificar novamente se o cache de disco do seu servidor está ativado.Caso em questão, tive um importador de dados fazendo 1,2 milhão de inserções durante uma execução.Demorou 4 horas e mudou sem cache.Demorou 16 minutos com ele ligado.

Uma coisa geral ao usar ASP.NET e Ajax (qualquer biblioteca Ajax) juntos é evitar aumentar suas coisas Page_Load e Page_Init (e suas contrapartes de método), uma vez que elas serão executadas em cada solicitação Ajax.

Quando isso for dito, eu abandonaria seriamente o ASP.NET AJAX e usaria qualquer coisa outro...

Anthem.NET, AjaxPRO.NET, jQuery ou qualquer outra coisa que não seja ASP.NET AJAX...

Claro que eu usaria Ra-Ajax eu mesmo, já que esse é o meu projeto.Mas, novamente, sou tendencioso...

Você pode ativar a compactação com base no suporte do seu cliente.Veja este artigo: Texto do link

Os recursos estáticos não devem ser reenviados, a menos que sejam alterados.O IIS enviará um código de resposta que instrui o navegador a usar a versão em cache.

Você também pode observar o cache de saída do ASP.NET, que pode ser aplicado de maneira bastante granular a diferentes partes da sua página:

http://msdn.microsoft.com/en-us/library/xsbfdd8c(VS.71).aspx

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