quinta-feira, 1 de janeiro de 2009

Alguns cuidados a ter com a performance de websites

Um assunto já amplamente discutido tem a ver com a optimização da performance das aplicações ASP.Net. Ninguém pode descurar a definição de regras básicas tendo em vista o melhor funcionamento das suas aplicações.

Principalmente na fase inicial de cada projecto, devem ser adoptadas soluções adequadas aos seus requisitos, de modo a que não hajam desagradáveis surpresas numa fase mais avançada, o que na maior parte dos casos vai acarretar a custos não previstos e elevados.

Um dos grandes objectivos deste blog é dar conhecimento de algumas formas e soluções para optimizar a performance das aplicações Web. Começo por deixar aqui alguns conselhos, já antigos, mas que nunca devem ser esquecidos.

1. Evitar idas desnecessárias ao servidor
Sempre que possível utilizar Javascript para controlar o aspecto e funcionalidade das páginas. É impressionante o número de aplicações que fazem uma ida ao servidor apenas para mostrar um controlo, ou fazer pequenas validações, obrigando a reconstruir toda a página.

Utilizar o “Page.IsPostBack” no load das páginas para evitar processamento desnecessário.

Se ainda não usas metodologia Ajax, deves começar o mais rápido possível. Além do melhor aspecto funcional das aplicações, evita em muito, a sobrecarga de trabalho e informação que é gerada para cada construção integral da página.

2. Usar o viewstate apenas quando necessário
Apesar de muito simpático, facilmente podemos perder o controlo do viewstate. Basta olhar para o html gerado daquelas páginas mais pesadas, principalmente as que fazem uso de datagrids ou repeaters, para ver aumentar exponencialmente o tamanho da nossa página.

Por defeito está activo, mas caso não precisemos dele, podemos sempre desactivá-lo das seguintes formas:
• Ao nível do controlo – colocar a propriedade EnableViewState=”false”
• Ao nível da página – colocar a directiva de página EnableViewState=”false”
• Ao nível da aplicação – colocar no Web.config a chave

3. Não usar excepções para fazer validações
Este tipo de código pode trazer complicações ao servidor, basta fazer um pequeno debug e ver o tempo que ele demora a gerar a excepção.

public bool IsNumeric(string val) {
  try {
    int number = int.Parse(val);
    return true;
  }
  catch {
    return false;
  }
}

4. E antes de colocar em produtivo…
Tirar o trace e o debug. Por incrível que pareça, é tão fácil de esquecer que já vi bastantes aplicações em produtivo com estas chaves activas.

No Web.config coloca:
<configuration>
<system.web>
<trace enabled="false" pageOutput="false" />
<compilation debug="false" />
</system.web>
</configuration>

Javascript: Activar o Debug no lado do cliente

Não sei porquê, mas continua a passar ao lado de muitos programadores a possibilidade que têm de fazer debug em javascript, no Visual Studio.

Muito simples a configuração:
• No IE, em propriedades avançadas, desmarcar a opção “Disable Script Debugging (Internet Explorer)”.

Depois basta colocar “debugger” onde quiser na sua função de javascript e está pronto. Da próxima vez que esta função for evocada irá despoletar o debug.