+3

Usando Gzip para comprimir a página PHP para envio mais rápido

criado por Benjamin Grando Moreira em 06/04/2006 11:42am
Esse artigo foi criado por Eloi de San Martin Lagranje no programacionweb.net e eu apenas dei uma reinterpretada nele. É uma técnica para diminuir o tempo de carregamento das páginas geradas com PHP e consiste em envia-las compactadas com o formato Gzip.

Você precisa compactar a página para o formato Gzip utilizando funções de controle de saída através da função ob_gzhandler atravéz da função ob_start(). Coloque essas funções no início do script e o termine com a função ob_end_flush().Veja o exemplo.

<?php 
ob_start("ob_gzhandler"); 

// Conteúdo da página

ob_end_flush(); 
?>

A função ob_start ativa o buffer de saída e, enquanto o buffer de saída estiver ativo, não é enviada a saída do script, ao invés a saída é guardada em um buffer interno. Isso vai armazenando a página no lado do cliente até terminar de carregar. ob_gzhandler() é uma função passada para a ob_start() para facilitar o envio de dados gz-encoded para browsers que suportam páginas comprimidas. Enquanto a funão ob_end_flush() descarrega o buffer de saída e o desativa.

A forma mais completa de compressão, consiste em aplicar a mesma função, mas eliminando por sua vez os espaços e quebras de linha da fonte do documento, o que não terá nenhum efeito visual, mas diminuirá o tempo de download:

<?php 
ob_start(); 

// Conteúdo da página
$cntACmp = ob_get_contents(); 
ob_end_clean(); 
$cntACmp = str_replace("\n", ' ', $cntACmp); 
$cntACmp = ereg_replace('[[:space:]]+', ' ', $cntACmp); 
ob_start("ob_gzhandler"); 
echo $cntACmp; 
ob_end_flush(); 
?> 

O conteúdo que será impresso deve estar entre ob_start() e ob_end_flush(). Conteúdo fora dessas funções ocasionará o warning “Cannot add header information... ”.

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)