Ola pessoal, Tenho encontrado constantemente sites com problemas serios de performance. Algumas das vezes temos problemas estruturais serios, mas algumas vezes os problemas podem ser simples de resolver e pequenos ajustes representam grande melhoria na experiencia do usuario. Quando dizemos performance de aplicacoes, logo os desenvolvedores pensam em grandes mudancas estruturas como cluster, melhorias na JVM, maquinas novas, cache de banco de dados e outras. Isto tambem sao melhoras importantes, mas quando se trata de aplicacoes web, a percepcao da performance pelo usuario, pode ser melhorada por otimizacoes mais simples como mudancas no front-end da aplicacao. Podemos encontrar as melhores praticas sobre performance de aplicacoes web em http://developer.yahoo.com/performance/rules.html. Entre as dicas descritas no documento acima temos: * Fazer menos requisicoes HTTP * Adicionar um cabecalho Expires na resposta HTTP * Utilizar Gzip para compactar os componentes da pagina * Colocar os Stylesheets no topo da pagina * Colocar os Scripts no fim da pagina * Evitar CSS Expressions * Colocar os codigos JavaScript e CSS em arquivos externos * Reduzir DNS Lookups * Compactar os codigos JavaScript * Remover Scripts duplicados * Evitar Redirects * Configurar as ETags * Make Ajax Cacheable Uma ferramenta que auxilia bastante e um addon do mozilla que chama YSlow que e um addon desenvolvido pela Yahoo. Este addon analisa com base nas melhores praticas documentadas no artigo acima quais regras estao sendo usadas. Uma dica que me ajudou bastante em algumas aplicacoes que trabalhei foi a de habilitar a compressao de paginas. Existem paginas que sao grandes, o que faz com que o acesso seja lento em conexoes de rede ruins. Esta compressao de pagina basicamente troca o requisito banda por CPU. Os passos realizados para a compressao sao os seguintes: 1 O browser do cliente faz uma requisicao e envia para o servidor no cabecalho que o browser aceita arquivos comprimidos. 2 O servidor verifica que o browser que fez a requisicao aceita arquivos comprimidos. 3 O servidor comprime a pagina e envia para o cliente. 4 O cliente descompacta a pagina recebida e exibe para o usuario. Podemos utilizar para a compressao de pagina o apache com o modulo mod_deflate. Para explicacoes mais detalhadas sobre como funciona o mod_deflate verifiquem a documentacao em http://httpd.apache.org/docs/2.0/mod/mod_deflate.html. E isto ai pessoal. Espero que voces sigam as orientacoes, para o bem de suas aplicacoes e de seus usuarios. Algumas pessoas estao tendo duvidas sobre como implementar uma pagina de erro com JSF, e resolvi entao criar este post para explicar uma maneira de implementar.Para se realizar o redirecionamento pode se utilizar o ActionListener do JSF. Segue abaixo um exemplo de implementacao da classe deste ActionListener:/** * Classe responsavel por tratar erros inesperados do sistema. * * @author Samuel Delfim * */public class ExceptionHandler extends ActionListenerImpl { @Override public void processAction(ActionEvent event) { // Obtem o contexto JSF FacesContext context = FacesContext.getCurrentInstance(); try { // Executa o metodo da classe Pai super.processAction(event); } catch (Exception e) { // Se ocorrer um erro inesperado, exibe a mensagem abaixo context.addMessage(null, new FacesMessage( FacesMessage.SEVERITY_FATAL, e.getMessage(), null)); // Redireciona para a pagina com