8 maneiras de melhorar a performance de um site

Existem, literalmente, centenas de maneiras para aumentar a performance de um site. Os métodos variam e alguns, obviamente, são mais eficientes que outros. As três áreas principais que você pode trabalhar são: hardware (servidor web), otimização de scripts server-side (PHP, Python, Java, etc) e performance do front-end. Este artigo se concentra no terceiro ponto: performance do front-end.
Inspecione suas páginas para encontrar os culpados
É muito útil inspecionar suas página web para encontrar componentes desnecessários ou componentes que podem ser otimizados. Esse tipo de inspeção geralmente envolve uma ferramenta como o Firebug (mas existem outras ferramentas) para determinar quais os componentes (imagens, arquivos CSS, documentos HTML, arquivos javascript, etc) estão sendo solicitados pelo usuário, quanto tempo levam para carregar e o quão grandes são (tamanho em KB). Regra geral, deve-se mantê-los tão pequenos quanto possível (até 25KB é uma boa meta).
A aba “Rede” do Firebug pode ajudá-lo a caçar os arquivos que “atolam” o site. No exemplo acima, tem-se uma visão geral de todos os componentes da página, incluindo: o que é, onde está, o quão grande é e quanto tempo demorou para carregar.
Salve as imagens no formato correto
Se o site possui várias imagens, é essencial aprender sobre os diferentes formatos e qual é o ideal para cada imagem. Há três formatos comuns para imagens na web: JPG, GIF e PNG. Em geral, deve-se usar JPG para fotos realistas com gradações suaves e tons de cores (degradês) e GIF ou PNG para imagens com cores sólidas (tais como gráficos e logotipos).
Para mais informações a esse respeito, leia o artigo sobre como otimizar imagens para web – guia de otimização de imagens.
Minimize seu CSS e javascript
Minimização é o processo de remoção de caracteres desnecessários (tais como tabulações, espaços comentários do código fonte, etc) a partir do código fonte para reduzir o tamanho do arquivo. Por exemplo:
.classe { color: #ffffff; line-height: 20px; font-size: 9px; }
Pode ser “convertido” para:
cecfe73221f674d132f7eb0738273bf2001
E não se preocupe: não é preciso reformatar o código manualmente! Há uma infinidade de ferramentas gratuitas à disposição para minimizar arquivos CSS e javascript. Para CSS, é possível encontrar várias ferramentas no artigo sobre ferramentas e recursos para desenvolvimento web; para javascript, algumas opções são /packer/, JSMIN, YUI Compressor e JavaScript Code Improver. Lembre-se: uma boa minify tool é aquela que permite reverter o processo de minimização.
Combine arquivos CSS e javascript para fazer menos requisições HTTP
Para cada componente necessário para renderizar uma página web, é criada uma solicitação HTTP no servidor. Então, se você tiver cinco arquivos CSS para uma página, serão necessários, pelo menos, 5 requisições HTTP separadas. Ao combinar arquivos, é possível reduzir a sobrecarga de solicitações HTTP necessárias para gerar uma página web.
Confira o recomendadíssimo artigo de Niels Leenheer sobre como combinar arquivos CSS e JS usando PHP (pode ser adaptado para outras linguagens). SitePoint discute um método similar para “empacotar” CSS e javascript – eles conseguiram reduzir o tempo de resposta em 76% em relação ao tempo original!
Use sprites CSS
CSS Sprite é uma combinação de imagens menores em uma imagem grande (já comentado no artigo “Otimização WordPress: aumente a performance e desempenho de seu blog/site“). Para mostrar a imagem correta, é preciso ajustar os valores da propriedade CSS background-position. Combinando várias imagens desta forma, é possível reduzir os pedidos HTTP (e reduzir requisições HTTP é um importantíssimo passo rumo à melhora de performance e desempenho de um site).
É possível fazer Sprites CSS manualmente, mas há uma ferramenta online chamada CSS Sprite Generator que dá a opção de fazer upload de imagens para serem combinados em um único sprite, gerando o código CSS (os valores de background-position) para renderizar as imagens.
Use compressão server side para diminuir o tamanho dos arquivos
Fazendo uma analogia, compactar objetos da página via server side é semelhante a zipar um arquivo grande para enviar por e-mail: você (servidor web) zipa um retrato grande da família (o componente da página) e envia por e-mail para seu amigo (o browser) que, por sua vez, descompacta o arquivo zip para ver a imagem. Os métodos de compressão mais comuns são Deflate e gzip.
Se o site está sendo executado em servidor próprio dedicado ou há um serviço de VPS e a compactação não está ativada, confira este guia sobre como instalar mod_gzip no Apache. Se não for o caso, entre em contato com seu servidor de hospedagem e peça instruções sobre como ativar a compactação server side.
Evite CSS e javascript incorporado e inline
Por padrão, CSS externo e arquivos javascript são armazenados em cache pelo browser do usuário. Se esse usuário sai do site, ainda sim ele possui o javascript e CSS em sua máquina; então, da próxima vez em que retornar ao site, não haverá necessidade de baixar esses arquivos novamente. Se há um monte de CSS e JavaScript no documento HTML (inline ou incorporado), não é possível se valer do benefício de cache do navegador. Portanto, sempre que possível, dê preferência ao uso de folhas de estilo e scripts externos.
Utilize serviços terceirizados para seus componentes e recursos
Aliviar um pouco o site de componentes e recursos, utilizando serviços de terceiros, reduz enormemente o trabalho do seu servidor web. O princípio é que a “carga total” é compartilhada com outro(s) servidor(es).
É possível usar o Feedburner para gerenciar feeds, Flickr para as imagens (apesar de algumas implicações de uso), Google AJAX Libraries API para servir estruturas javascript populares (como Mootools, jQuery e Dojo), dentre outros.
E você, tem alguma dica de como melhorar a performance de um site?
7 interações em "8 maneiras de melhorar a performance de um site"
Erros comuns em desenvolvimento web para campanhas de SEO | desenvolvimento para web
Vagner Amaral – Desenvolvimento Web » Não se preocupar com o tempo de carregamento da página
Como fazer loading em conteúdos do site | desenvolvimento para web
Detalhe pequeno é que não é necessário ponto-e-vírgula após a última declaração css.
Por exemplo, para as regras css abaixo:
.class_1{color:#fff;line-height:20px;font-size:9px;}
.class_2{font:800 12px/18px Verdana, sans-serif;}
.class_3{border:1px solid #333;padding:20px;}
Teríamos:
.class_1{color:#fff;line-height:20px;font-size:9px}
.class_2{font:800 12px/18px Verdana, sans-serif}
.class_3{border:1px solid #333;padding:20px}
Num css extenso esse detalhe faz diferença.
Uma ótima ferramenta recente e totalmente brasileira é o Otimizador do Grupo Dicas em Geral -> http://www.dicasemgeral.xpg.com.br/otimizador/
Perfeito para quem mantém um site ou blog na internet e manipula diversas imagens.
Muito simples, de fácil acesso e em poucos segundos já está tudo feito. Vale a pena!
Show de bola, assim que possível tentarei implementar esses processos em meus sites!
@ Tiago Dias,
@ Amilton Junior
Obrigado pelas dicas, pessoal! Abraços!
@ Wallysson Nunes
Valerá a pena! ;-)