Cartilha de Performance e Boas práticas na Web Versão 1.0 por Thiago Verly
Introdução Esta cartilha tem como objetivo alinhar e padronizar o desenvolvimento web dos produtos Lancenet! focando na melhoria do desempenho/performance dos hotsites e otimização da aplicação no servidor web. 
Tópicos Javascript CSS Imagens Cache Compressão de arquivos .htaccess Peso em Kbytes
Javascript Apenas um framework de javascript poderá ser utilizado para enriquecer a Interface do Usuário - UI, evitando carregamento de arquivos desnecessários. Algumas opções são: Jquery Scriptaculous Prototype Mootools Dojo
Javascript Esses arquivos deverão obrigatoriamente ser carregados externamente pela rede de Datacenters do Google. As vantagens sã o  diminuição da latência,   paralelismo maior no carregamento dos arquivos   e   melhor armazenamento em cache. <script src=&quot;http://www.google.com/jsapi&quot;></script> <script type=&quot;text/javascript&quot;>         google.load(&quot;jquery&quot;, &quot;1.3.2&quot;); </script> Documentação :  http://code.google.com/intl/pt-BR/apis/ajaxlibs/documentation/#googleDotLoad
Javascript É necessário minificar o código com as funções em javascript, diminuindo o peso do arquivo .js em Kbytes. Lembrando sempre de guardar um backup da versão identada para futura alteração. http://tools.w3clubs.com/jsmin/
CSS Caso seja necessário usar um reset.css para resetar as propriedades de todos os browsers, use o reset do Yahho UI, pois este arquivo será carregado pela rede de distribuição de conteúdo do Yahoo paralelamente com outros arquivos, diminuindo o tempo final de carregamento da página. <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://yui.yahooapis.com/3.1.1/build/cssreset/reset-min.css&quot;>
CSS Arquivos CSS também devem ter o código minificado, lembrando sempre de guardar o backup do arquivo identado para facilitar a leitura e uma futura alteração. http://tools.w3clubs.com/cssmin/
Imagens As imagens do hotsite devem sempre estar o mais otimizado possível reduzinho o máximo de peso em Kbyte sem perder a qualidade. Após a otimização, deverá ser ainda mais otimizada através da ferramenta Smush.it. http://www.smushit.com/ysmush.it/
Imagens Para usar thumbnails nas fotos, NUNCA redimensione a imagem pelo atributo  width  e  height   do HTML. Use a classe  Timthumb  que faz o  crop  da imagem reduzinho seu peso em Kbyte. Errado:  <img width=&quot;100&quot; height=&quot;100&quot; src=&quot;sua_imagem.jpg&quot; alt=&quot;Imagem&quot; /> Correto:   <img src=&quot;/scripts/timthumb.php?src=/sua_imagem.jpg&h=100&w=100&zc=1&quot; alt=&quot;Imagem&quot; /> Documentação :  http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/
Cache A aplicação deve sempre ter o seu conteúdo gerado em arquivo estático html, evitando consultas excessivas no servidor de Banco de Dados. Se o hotsite for desenvolvido com o CMS Wordpress, é obrigatório o uso do plugin  WP Super Cache  e ser configurado corretamente para que ele se encarregue de criar automaticamente esse cache das páginas. WP Super Cache :  http://wordpress.org/extend/plugins/wp-super-cache/
Compressão de arquivos - PHP Arquivos javascript e CSS devem ser comprimidos utilizando a biblioteca Minify. Na prática, ela carrega todos os arquivos javascript e CSS em apenas uma requisição HTTP, diminuindo o tempo final de download da página. Para os projetos em Wordpress existe o plugin  WP Minify . Antes : <script src=&quot;script1.js&quot;></script> <script src=&quot;script2.js&quot;></script> Depois : <script src =&quot;/min/?f=s cript1.js, s cript2.js, ... &quot;></script> Documentação :  http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/README.txt Plugin WP:   http://wordpress.org/extend/plugins/wp-minify/
Compressão de arquivos - ASP Arquivos javascript e CSS devem ser comprimidos utilizando a biblioteca MbCompression. Na prática, ela carrega todos os arquivos javascript e CSS em apenas uma requisição HTTP, diminuindo o tempo final de download da página. Documentação :  http://codeplex.codeplex.com/
.htaccess Para cacheamento correto do browser para os arquivos estáticos, insira o seguinte código no arquivo .htaccess do servidor. <ifModule mod_headers.c>    <filesMatch &quot;\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public&quot;    </filesMatch>    <filesMatch &quot;\\.(css)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public&quot;    </filesMatch>    <filesMatch &quot;\\.(js)$&quot;>      Header set Cache-Control &quot;max-age=2592000, private&quot;    </filesMatch>    <filesMatch &quot;\\.(xml|txt)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public, must-revalidate&quot;    </filesMatch>    <filesMatch &quot;\\.(html|htm|php)$&quot;>      Header set Cache-Control &quot;max-age=1, private, must-revalidate&quot;    </filesMatch> </ifModule> <ifModule mod_headers.c>    Header unset ETag </ifModule> FileETag None <ifModule mod_expires.c>    ExpiresActive On    ExpiresDefault &quot;access plus 1 minutes&quot;    ExpiresByType text/html &quot;access plus 1 minutes&quot;    ExpiresByType text/css &quot;access plus 1 months&quot;    ExpiresByType text/javascript &quot;access plus 1 months&quot;    ExpiresByType text/plain &quot;access plus 1 months&quot;    ExpiresByType application/x-javascript &quot;access plus 1 months&quot;    ExpiresByType application/x-shockwave-flash &quot;access plus 1 months&quot;    ExpiresByType image/gif &quot;access plus 1 years&quot;    ExpiresByType image/jpeg &quot;access plus 1 years&quot;    ExpiresByType image/jpg &quot;access plus 1 years&quot;    ExpiresByType image/png &quot;access plus 1 years&quot;    ExpiresByType image/x-icon &quot;access plus 1 years&quot; </ifModule>
Peso em Kbytes O peso  máximo  aceitável para uma página do hotsite é entre 300kb e 400kb, sendo o ideal 200kb. É necessário ter todos esse cuidados durante o desenvolvimento dos hotsites para entregarmos um conteúdo de qualidade para o usuário.
Thiago Verly Analista de Web - Lancenet! [email_address]

Performance e boas_praticas_de_web

  • 1.
    Cartilha de Performancee Boas práticas na Web Versão 1.0 por Thiago Verly
  • 2.
    Introdução Esta cartilhatem como objetivo alinhar e padronizar o desenvolvimento web dos produtos Lancenet! focando na melhoria do desempenho/performance dos hotsites e otimização da aplicação no servidor web. 
  • 3.
    Tópicos Javascript CSSImagens Cache Compressão de arquivos .htaccess Peso em Kbytes
  • 4.
    Javascript Apenas umframework de javascript poderá ser utilizado para enriquecer a Interface do Usuário - UI, evitando carregamento de arquivos desnecessários. Algumas opções são: Jquery Scriptaculous Prototype Mootools Dojo
  • 5.
    Javascript Esses arquivosdeverão obrigatoriamente ser carregados externamente pela rede de Datacenters do Google. As vantagens sã o  diminuição da latência,   paralelismo maior no carregamento dos arquivos   e   melhor armazenamento em cache. <script src=&quot;http://www.google.com/jsapi&quot;></script> <script type=&quot;text/javascript&quot;>        google.load(&quot;jquery&quot;, &quot;1.3.2&quot;); </script> Documentação :  http://code.google.com/intl/pt-BR/apis/ajaxlibs/documentation/#googleDotLoad
  • 6.
    Javascript É necessáriominificar o código com as funções em javascript, diminuindo o peso do arquivo .js em Kbytes. Lembrando sempre de guardar um backup da versão identada para futura alteração. http://tools.w3clubs.com/jsmin/
  • 7.
    CSS Caso sejanecessário usar um reset.css para resetar as propriedades de todos os browsers, use o reset do Yahho UI, pois este arquivo será carregado pela rede de distribuição de conteúdo do Yahoo paralelamente com outros arquivos, diminuindo o tempo final de carregamento da página. <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://yui.yahooapis.com/3.1.1/build/cssreset/reset-min.css&quot;>
  • 8.
    CSS Arquivos CSStambém devem ter o código minificado, lembrando sempre de guardar o backup do arquivo identado para facilitar a leitura e uma futura alteração. http://tools.w3clubs.com/cssmin/
  • 9.
    Imagens As imagensdo hotsite devem sempre estar o mais otimizado possível reduzinho o máximo de peso em Kbyte sem perder a qualidade. Após a otimização, deverá ser ainda mais otimizada através da ferramenta Smush.it. http://www.smushit.com/ysmush.it/
  • 10.
    Imagens Para usarthumbnails nas fotos, NUNCA redimensione a imagem pelo atributo width e height do HTML. Use a classe Timthumb que faz o crop da imagem reduzinho seu peso em Kbyte. Errado: <img width=&quot;100&quot; height=&quot;100&quot; src=&quot;sua_imagem.jpg&quot; alt=&quot;Imagem&quot; /> Correto:   <img src=&quot;/scripts/timthumb.php?src=/sua_imagem.jpg&h=100&w=100&zc=1&quot; alt=&quot;Imagem&quot; /> Documentação :  http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/
  • 11.
    Cache A aplicaçãodeve sempre ter o seu conteúdo gerado em arquivo estático html, evitando consultas excessivas no servidor de Banco de Dados. Se o hotsite for desenvolvido com o CMS Wordpress, é obrigatório o uso do plugin WP Super Cache e ser configurado corretamente para que ele se encarregue de criar automaticamente esse cache das páginas. WP Super Cache :  http://wordpress.org/extend/plugins/wp-super-cache/
  • 12.
    Compressão de arquivos- PHP Arquivos javascript e CSS devem ser comprimidos utilizando a biblioteca Minify. Na prática, ela carrega todos os arquivos javascript e CSS em apenas uma requisição HTTP, diminuindo o tempo final de download da página. Para os projetos em Wordpress existe o plugin WP Minify . Antes : <script src=&quot;script1.js&quot;></script> <script src=&quot;script2.js&quot;></script> Depois : <script src =&quot;/min/?f=s cript1.js, s cript2.js, ... &quot;></script> Documentação :  http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/README.txt Plugin WP:   http://wordpress.org/extend/plugins/wp-minify/
  • 13.
    Compressão de arquivos- ASP Arquivos javascript e CSS devem ser comprimidos utilizando a biblioteca MbCompression. Na prática, ela carrega todos os arquivos javascript e CSS em apenas uma requisição HTTP, diminuindo o tempo final de download da página. Documentação :  http://codeplex.codeplex.com/
  • 14.
    .htaccess Para cacheamentocorreto do browser para os arquivos estáticos, insira o seguinte código no arquivo .htaccess do servidor. <ifModule mod_headers.c>    <filesMatch &quot;\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public&quot;    </filesMatch>    <filesMatch &quot;\\.(css)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public&quot;    </filesMatch>    <filesMatch &quot;\\.(js)$&quot;>      Header set Cache-Control &quot;max-age=2592000, private&quot;    </filesMatch>    <filesMatch &quot;\\.(xml|txt)$&quot;>      Header set Cache-Control &quot;max-age=2592000, public, must-revalidate&quot;    </filesMatch>    <filesMatch &quot;\\.(html|htm|php)$&quot;>      Header set Cache-Control &quot;max-age=1, private, must-revalidate&quot;    </filesMatch> </ifModule> <ifModule mod_headers.c>    Header unset ETag </ifModule> FileETag None <ifModule mod_expires.c>    ExpiresActive On    ExpiresDefault &quot;access plus 1 minutes&quot;    ExpiresByType text/html &quot;access plus 1 minutes&quot;    ExpiresByType text/css &quot;access plus 1 months&quot;    ExpiresByType text/javascript &quot;access plus 1 months&quot;    ExpiresByType text/plain &quot;access plus 1 months&quot;    ExpiresByType application/x-javascript &quot;access plus 1 months&quot;    ExpiresByType application/x-shockwave-flash &quot;access plus 1 months&quot;    ExpiresByType image/gif &quot;access plus 1 years&quot;    ExpiresByType image/jpeg &quot;access plus 1 years&quot;    ExpiresByType image/jpg &quot;access plus 1 years&quot;    ExpiresByType image/png &quot;access plus 1 years&quot;    ExpiresByType image/x-icon &quot;access plus 1 years&quot; </ifModule>
  • 15.
    Peso em KbytesO peso  máximo aceitável para uma página do hotsite é entre 300kb e 400kb, sendo o ideal 200kb. É necessário ter todos esse cuidados durante o desenvolvimento dos hotsites para entregarmos um conteúdo de qualidade para o usuário.
  • 16.
    Thiago Verly Analistade Web - Lancenet! [email_address]