Já utiliza a compressão gzip na sua página? Espero que sim, isto porque tal como vou mostrar hoje, comprimir a vossa página com gzip torna a página surpreendentemente mais rápida!
Para demonstrar isto guardei a página da SAPO que é uma página com bastante conteúdo, e por isso bastante pesada, tem cerca de 413Kb.
O que se poupa comprimindo os ficheiros com gzip? Velocidade e bandwidth, então para host’s em que este segundo é limitado esta é uma técnica imprescindível!
Nos testes seguintes apenas vou utilizar o ficheiro HTML da SAPO e não todos os recursos externos (imagens, css e JavaScript).
Teste 1
Tamanho
$ cat < sapo.html | wc -c 68712
$ gzip < sapo.html | wc -c 14890
Em termos de tamanho vemos já que de 68,712bytes passamos para 14,890bytes, o gzip diminuiu o tamanho desta página em 53,822bytes, ~78% ! A página final ficou então com apenas 22% do tamanho original! É uma enorme diferença.
Tempo de Compressão
Há quem afirme que comprimir as páginas com gzip é lento, consome recursos no servidor e não traz grandes vantagens. Como vimos no exemplo anterior o gzip reduziu o tamanho da página em 78%! 78% é muita fruta.
Vamos então ver o tempo que demora a comprimir esta página.
$ time gzip < sapo.html > /dev/null real 0m0.005s user 0m0.004s sys 0m000s
No meu laptop (Intel Core Duo T2350 @ 1.86Ghz) o gzip demorou 4ms a comprimir 68,712bytes, mas vamos testar com ficheiros maiores…
Teste 2
Tamanho
Para este teste, utilizando na mesma a página da SAPO guardada aumentei o seu tamanho copiando o código integralmente e colando-o no fim, várias vezes.
$ cat < sapo.html | wc -c 3023330
Temos agora um ficheiro de 3,023,330bytes, cerca de 3Mb sem compressão alguma.
$ gzip < sapo.html | wc -c 631094
Este ficheiro de aproximadamente 3Mb, comprimido com gzip fica com apenas 631,094bytes, 631Kb! Isto dá uma redução de 2,392,236bytes ou seja mais de 2Mb!
E 3Mb, quanto tempo demorará o gzip a comprimir?
Tempo de Compressão
$ time gzip < sapo.html > /dev/null real 0m0.189s user 0m0.188s sys 0m0.000s
Desta vez foi bem mais lenta a compressão, mas mesmo assim a compressão demorou 189ms, se dividirmos o segundo em dez partes, a compressão utilizou pouco menos que duas dessas partes para comprimir 3Mb e passá-los para cerca de 600Kb!
Conclusão
Como vimos o algoritmo de compressão utilizado no gzip permitiu comprimir esta página em 78% ao nível do tamanho utilizando apenas 5ms para o fazer num laptop com vários programas a utilizar capacidade de processamento e que tem menos capacidade de processamento que um servidor actual, isto vai tornar a página mais rápida e vai utilizar menos bandwidth que muitas vezes é limitada em alguns planos de alojamento.
Vejamos então o gráfico seguinte para ver como se comporta a compressão gzip com o aumento do tamanho do ficheiro:
Analisando vemos que quando temos uma página web com 1,9Mb o tempo de compressão é de 125ms, isto é, 0,125 segundos. É super raro existirem páginas com este tamanho ao nível de HTML, para não dizer que não existem mesmo (se conhece alguma envie o URL em baixo nos comentários).
Assim tendo em conta os resultados, podemos concluir que se deve utilizar gzip para comprimir os websites de forma a poupar tempo de espera ao utilizador e largura de banda no servidor e no utilizador.
E vocês o que acham? Vale a pena ou não vale? Gostava de saber a vossa opinião.
Não referiste (ou pelo menos não elaboraste) na maior vantagem da compressão, que é acelerar muito o download da página e dos restantes recursos por parte do browser. Isto leva a que os tempos de acesso ao site sejam muito mais rápidos, com utilizadores mais satisfeitos. 😀
Para utilizadores com dial-up (ainda existe muitos…) isto então é mesmo imprescindível.
Sim, esqueci-me de referir isso, ao tornar as páginas mais pequenas estas vão ser descarregadas mais rápidamente logo o visitante tem de esperar menos tempo.
Menos tempo de espera (de seca) mais satisfação!
Obrigado pelo comentário Triton, espero ver-te mais vezes por cá :).
Olá,
e como é que se pode comprimir as páginas ? Não é adicionando alguma coisa no site ?
Cumprimentos
Celso desde já agradeço-te o comentário e tenho gosto em ver-te mais vezes por cá :).
Quanto à tua pergunta: sim, para se comprimir tens várias opções, vou deixar alguns links onde podes ver isso.
http://www.addedbytes.com/php/php-gzip-and-htaccess/
http://www.webmasterworld.com/apache/3326800.htm
http://www.blog.highub.com/apache/http-server/htaccess-gzip-for-faster-loading-and-bandwidth-saving/
http://weblouca.com/Artigos/comprimir-gzip-javascript-e-css
Para mais dicas de optimização podes ver um post meu: http://joaopedropereira.com/blog/2009/04/03/optimizacao-websites/
Alguém tem sugestões para dar em relação ao método a utilizar para comprimir as páginas?
Olá João,
obrigado pela resposta 🙂
Muito bom!
Gostei bastante e desconhecia esta técnica.
Abraço.
Obrigado pelo comentário :).
Pagina de 1,9MB nao conheço, mas a do Walmart do Brasil tem 1,4MB.
Realmente vale a pena utilizar o gzip.
Surpreendente este metodo,nunca tinha ouvido falar breve testarei em um site,além da beleza do layout,ter um site carregando rápido é obrigação!rsrs
Principalmente aqui no brasil em que muitos (milhares) usam a internet discada..rs
Abraço!
Olá amigo.
Achei muito bacana o seu post, porém ainda estou perdido.
Tem algum exemplo de como fazer a compressão com GZip ?
´
Fico no aguardo, desde já agradeço a atenção.
Uma das formas mais simples de imlementar a compressão gzip num servidor apache é mesmo introduzindo uma entrada no .htaccess que vou exemplificar:
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript