mod_deflate em 15 minutos
Sempre achei compressão de dados na transmissão via HTTP uma coisa muito bacana. Já brinquei bastante com o mod_gzip e andei brincando com o mod_deflate.
O mod_deflate vem com o Apache 2.0, portanto qualquer pessoa que esteja usando o Apache 2.0 pode usar o mod_deflate. O pacote do Apache que vem com o Fedora tem disponível todos os módulos extras, basta então descomentar a seguinte linha no httpd.conf
LoadModule deflate_module modules/mod_deflate.so
Eu costumo compilar o Apache do tarball mesmo. Para habilitar o mod_deflate nesse caso, como um módulo compartilhado, basta um:
$ ./configure --enable-so --enable-deflate=shared
$ make && make install
Uma vez com o módulo instalado, basta configurar. Essa é a configuração que eu uso no meu personal server (em casa, não o LSDR.net, infelizmente) e passei para o Jean usar no Salacious Crumb:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Comprime apenas HTML para o Netscape 4.x
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Não comprime nada em caso de encontrarmos
# o IE ou o Netscape 4.06-4.08
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE no-gzip
# Excluindo imagens, binários e PDFs
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
# Configurando o nível de compressão
DeflateCompressionLevel 9
DeflateBufferSize 8192
# Logando o trabalho do mod_deflate
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate
</IfModule>
Essa configuração eu tirei do manual do Apache e do excelente WebCompression.org. Com essa configuração, dá até para obter 70% de compressão nos arquivos de saída, tais como HTML, CSS e etc…
Exemplo rápido: O site do iG, cuja página principal tem em torno de 50 Kb, teria que transmitir apenas 15 Kb. Chute um valor para o número de pessoas que acessam o iG todo dia e calcule vc mesmo a redução de consumo de banda que o iG poderia ter.
O único porém, que é o verdadeiro limitante, é que o IE - browser utilizado por 90% da web - não suporta direito o envio de conteúdo comprimido. Teremos que esperar sair o IE 7.0. Sigh.

Comentário de Alex Hubner - 03.05.04 @ 22h26 #
O IE (5.0 para cima) suporta compressão HTTP no formato gzip numa boa. Aliás, o IIS 5.0 conta com um “compressor” HTTP nativo bastante eficaz. O problema da compressão HTTP é o seguinte: só funciona bem para arquivos plain text (HTML/CSS puros) e aumenta o tempo de processamento no servidor e no cliente, podendo não ser uma opção viável (processamento custa mais caro que banda em alguns casos, especialmente nos EUA, onde banda é como água) para provedores de sites de grande volume.
Comentário de Luiz Rocha - 04.05.04 @ 01h31 #
Para reduzir a carga no servidor, pode ser feito cache de páginas estáticas. Tá certo que hoje é muito mais comum encontrar conteúdo dinâmico do que estático na internet.
Agora, vc tem certeza que o IE tem um suporte adequado para compressão? Pq eu tinha feito uma configuração para o Jean que estava comprimindo apenas-texto quando o browser em questão era o IE, mas quando eu fui visitar o site dele com o IE 6.0 deu uns problemas…
A princípio, não acredito que tenha sido erro de configuração. Mas posso estar enganado.
Pingback de Saber explicar » LSDR.net - 29.11.07 @ 23h40 #
[…] explicação* sobre compressão de dados usando mod_deflate significativamente mais clara que a que eu tentei fazer a alguns […]