fbpx

Compressão de dados: gzip, zlib e deflate

Compressão de dados: gzip, zlib e deflate

Utilizar a compressão de dados é uma excelente prática de otimização de páginas web, além de ser muito fácil de ser implementada . O processo é bem simples: o servidor comprime todo o HTML, CSS e Javascript antes de enviar para o navegador, dessa forma a transferência dos arquivos acontece muito mais rápida.

Pesquisando sobre o assunto, me deparei com esses três nomes: gzip, zlib e deflate. What? Qual usar?

Deflate – é um algoritmo de compressão de dados.

Gzip – é um programa de compressão de dados para sistemas baseados em Unix. Utiliza o algoritmo deflate.

Zlib – é uma biblioteca multiplataforma de compressão de dados, criada para popularizar o algoritmo deflate.

Resumindo, tanto faz se você vai usar o Gzip ou o Zlib, já que o algoritmo de compactação é o mesmo.  O importante é ativar a compressão para melhorar a performance do seu site, diminuindo cerca de 70% do tráfego total. Geralmente eu dou preferência para o zlib, pois acho mais rápido de habilitar (veja abaixo). Se ele não estiver disponível então eu habilito o gzip.

Ativando o Zlib

Para usar o Zlib você precisa verificar se a biblioteca está ativa no servidor através da função phpinfo().

zlib2

Se estiver, basta adicionar essas linhas de código no header do seu site antes do html.

<?php
/** Coloque essas duas linhas no cabeçalho do site **/
ini_set('zlib.output_compression','On');
ini_set('zlib.output_compression_level','1');
?>
<!doctype html>
<html dir="ltr" lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Comprenssão de dados: gzip, zlib e deflate</title>

Ativando o Gzip

Caso você prefira usar o Gzip  ou esteja impedido de usar o Zlib, em servidores linux é possível ativá-lo através do arquivo .htaccess adicionando o código abaixo:

<IfModule mod_deflate.c>
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
<IfModule filter_module>
FilterDeclare COMPRESS
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject
FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $image/x-icon
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf
FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype
FilterChain COMPRESS
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
</IfModule>
<IfModule !mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>
</IfModule>

Comprovando o resultado

Com uma ferramenta disponibilizada pelo site Port80 é possível verificar o status da compressão, comparar o tamanho do arquivo original com o do arquivo comprimido e ter uma estimativa de tempo de carregamento da página. Veja o teste que fiz:

verifica-compressao-gzip1

Basta adicionar a url do seu site no campo compression check e clicar em check para fazer o teste com o seu site.

http://www.port80software.com/support/p80tools.asp

Referências

Gzip.org

Zlib.net

Wikipedia.org/Zlib

Wikipedia.org/Gzip

Template de htacess modelo simples focado em seo

Forum Microsoft

Deixe um comentário

avatar

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

  Subscribe  
Notify of