Sites mais rápidos com conteúdo compimido usando Apache2 e o mod_deflate

Se pudéssemos colocar todas as mazelas da internet em uma única expressão essa seria: Limitação de Banda.

吉祥物大集合
Creative Commons License photo credit: tutchiio

Para ajudar um pouco nesse problema podemos configurar o servidor Apache2 para comprimir tudo que for interessante no lado do servidor e enfiar os arquivos comprimidos na rede.

Do lado do cliente, os navegadores darão seu jeito para descomprimir e colocar tudo no lugar certo. Conteúdo lindo e faceiro.

Para fazer isso, precisamos habilitar um módulo extra: O mod_deflate.

O uso deste módulo permite que você comprima arqivos de texto (html,javascript, css)  com fatores de compressão da órdem de 40%.
Essa compressão causa um pequeno aumento de carga nas cpus do servidor. Fique tranquilo quanto a isso, o ganho de banda mais que compensa o aumento de carga.

Habilitar o mod_deflate no ubunto é simples. Primeiro abra uma sessão no terminal, com direitos de root e digite:

a2enmod deflate

Este comando tão complexo, habilitará o mod_deflate e pronto. Não fique tão contente. Nem tudo são flores e ainda não acabamos. Para que o mod_deflate funcione, você terá que reiniciar o apache. Então digite:

/etc/init.d/apache2 restart

Nem todo mundo tem a graça e a felicidade de usar o Ubuntu ou o Debian para estes não tão felizes, será necessário editar o arquivo de configuração do Apache (http.conf, apache.conf, ou coisa parecida)  e incluir a seguinte linha:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Calma! Ainda não acabou.

Você ainda precisa criar ou editar o arquivo deflate.conf que fica em /etc/apache2/mods-available/ e determinar o que deve ou não ser comprimido. O meu arquivo, que uso a anos sem pestanejar, segue:

<IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/html
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE image/svg+xml
        AddOutputFilterByType DEFLATE image/x-icon
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE application/x-javascript

        AddOutputFilterByType DEFLATE application/x-httpd-php
        AddOutputFilterByType DEFLATE application/x-httpd-fastphp
        AddOutputFilterByType DEFLATE application/x-httpd-eruby

        DeflateCompressionLevel 9

# Netscape 4.X has some problems
        BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Setup custom deflate log
#        DeflateFilterNote Input instream
#        DeflateFilterNote Output outstream
#        DeflateFilterNote Ratio ratio
#
#        LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
# Example of log file (add to vhosts)
#        CustomLog logs/deflate_log DEFLATE
</IfModule>

Você pode tirar os comentários da última parte para criar um log escial só para o deflate.

Share/Save/Bookmark

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comments are closed.