Torne o seu site mais rápido com Gzip

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.

SAPO

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:

gzip compression

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.

16 comments

  1. 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.

  2. 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á :).

  3. Olá,
    e como é que se pode comprimir as páginas ? Não é adicionando alguma coisa no site ?

    Cumprimentos

    1. 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?

  4. 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!

  5. 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.

    1. 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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.