Posts de Outubro 21st, 2008|Página de posts diários
Melhorando significativamente a performance de aplicações web sem gastar tanto
Performance é uma coisa complicada. Sempre tem alguma coisa para melhorar na aplicação. Banco de dados, cluster, replicação de estado, cache dos dados, load-balance, pooling de recursos, processamento assincrono, networking, I/O… São tantas coisas que podem causar problemas de performance, gargalos, instabilidade, que nós, pobres desenvolvedores, ficamos perdidos!
Como diria Donald Knuth, “a otimização prematura é a raiz de todo o mal”. Ás vezes se gasta muito tempo otimizando determinada parte da aplicação, mas com um ganho de performance muito baixo. E além do tempo gasto na otimização, gastasse muito tempo testando se a otimização não quebrou o funcionamento da aplicação (ok, testes automatizados reduzem este tempo) ou testando quanto a performance melhorou por causa da otimização feita.
Sempre que se fala em melhorar a performance, muitos desenvolvedores pensam em load-balance, cache do banco de dados, pooling de recursos, melhoria nas queries, etc. Não há nada de errado em aplicar esses conceitos nas aplicações, inclusive muitas vezes isso deve mesmo ser feito. Mas quando se trata de aplicações web, a performance da aplicação, ou a percepção da performance da aplicação pelo usuário, pode ser melhorada por otimizações no front-end da aplicação, sem grandes alterações na arquitetura ou no código da aplicação.
Li recentemente o livro High Performance Web Sites, que traz 14 dicas para melhorar a performance de aplicações web alterando pontualmente o front-end das aplicações web. Algumas dessas dicas são bem fáceis de se implementar e trazem um excelente ganho na rapidez com que as páginas web são carregadas.
O livro diz que, na grande maioria dos casos, a maior parte do tempo gasto para visualizar uma página web é gasto na renderização do HTML pelo browser, e não no processamento da requisição web pelo servidor. Então vale a pena investir tempo e esforço para criar um front-end que é renderizado mais rápido pelo browser.
As dicas do livro são:
- Fazer menos requisições HTTP
- Usar uma Content Delivery Network
- Adicionar um cabeçalho “Expires” na resposta HTTP
- Utilizar Gzip para compactar os componentes da página
- Colocar os Stylesheets no topo da página
- Colocar os Scripts no fim da página
- Evitar CSS Expressions
- Colocar os códigos JavaScript e CSS em arquivos externos
- Reduzir DNS Lookups
- Compactar os códigos JavaScript
- Evitar Redirects
- Remover Scripts duplicados
- Configurar as ETags
- Make Ajax Cacheable
- Adicionar um cabeçalho “Expires” na resposta HTTP
- Utilizar Gzip para compactar os componentes da página
Comentários (9)