25 Novembro 2008
A compressão é uma das mais rápidas formas de acelerar o seu website. Até à uns anos atrás a compressão na web não era suportada pelos browsers (IE 5 -), no entanto esta realidade mudou, felizmente. Sites como o Google e o Yahoo utilizam esta técnica para acelerarem os seus websites.
Quando você acede a uma página de internet o seu browser realiza um pedido HTTP, e recebe uma resposta, caso o servidor se encontre online!
O pedido HTTP é algo do género:

1. Browser: GET /index.php;
2. Servidor: Vou ver se aqui tenho isso;
3. Servidor: Está aqui (200OK), vou enviar;
4. Browser: 100KB... a descarregar, espera, já está!.
Qual é o problema?
O servidor está a servir o PHP sem que este esteja comprimido. E quer seja .html, ou .php, o potencial de compressão é enorme! Porque não serve o servidor uma versão em zip?
1. Porque o servidor não está configurado para tál!
2. Porque o Browser não pede por componentes em GZIP!
Pedido HTTP por componentes comprimidos:

1. Browser: GET /index.php, e se tiveres ai em gzip manda!
2. Servidor: Vou ver se aqui tenho isso, sim encontrei! Preferes em gzip? ok!
3. Servidor: Estou a comprimir para te mandar isso!
4. Browser: 10KB... Já cá está!
Ficheiro mais pequeno = download mais rápido!
Um exemplo é o HTML do weblouca.com que possui cerca de 70KB descomprimido! E cerca de 15KB comprimido!
Resumindo:
O browser envia um header: Accept-Encoding: gzip, deflate
O Servidor envia a resposta de que está a servir o conteúdo comprimido: Content-Encoding: gzip
Se o servidor, não envia o Content-enconding: gzip, significa que não está a servir o conteúdo comprimido, e atenção que isto é extremamente comum em muitos servidores!
Ora bem, se o servidor não está a servir o seu conteúdo comprimido, embora o seu browser esteja a aceitar conteúdo em gzip! A solução passa por editar o ficheiro .Htaccess
e adicionar as seguintes linhas:
A solução anterior activa a compressão via PHP.
Uma outra solução passa por adicionar as linhas que se seguem ao invés das anteriores:
Se não possui acesso ao ficheiro .Htaccess no seu servidor, adicione a seguinte linha ao inicio do seu index.php
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
ob_start("ob_gzhandler"); else ob_start(); ?>
Verifique se o seu site está a ser servido comprimido, com uma das seguintes ferramentas:
No Browser: HTTP Headers, procure por "content-encoding:gzip";
Online: GIDZipTest;
Dezembro 11, 2008