Ziproxy - Proxy de compactação e redução de imagens

Em raros casos o gargalo se encontra entre o servidor de internet e o cliente. O ziproxy é um software que ajudará você a compactar e reduzir drasticamente o tamanho de arquivos (html, texto e imagens) antes de enviar para o cliente no link reduzido (discado por exemplo).

[ Hits: 57.659 ]

Por: Patrick Brandao em 31/07/2006 | Blog: http://www.patrick.eti.br


Introdução



Por Patrick Brandão
http://www.patrick.eti.br
contato[at]patrick.eti.br

Aviso


Este tutorial pode ser distribuído, impresso e copiado de todas as formas e meios possíveis desde que se mantenha o nome, a página web e o e-mail do autor no cabeçalho em local visível, abaixo do título e com a letra maior ou igual a usada no texto.

Meu primeiro artigo sobre o ziproxy foi a muito tempo e de lá pra cá o software andou evoluindo muito.

O lançamento da série 2 traz um importante recurso: suporte a proxy transparente.

Para quem não sabe, o ziproxy é um proxy de requisição (não faz cache de objetos) que procura compactar os objetos adquiridos na internet antes de entregar para o cliente.

A técnica usada para compactar textos (html, css, javascript, etc...) é o mais simples possível, ele usa o gzip para reduzir drasticamente o tamanho desses arquivos. O gzip pode transformar um arquivo de texto de 100k em 387 bytes (fiz o teste). Os navegadores (IE, Firefox, etc...) reconhecem esse formato gzip e descompactam o arquivo antes de processar seu conteúdo.

A técnica usada para compactar imagens já é mais complexa. Os arquivos jpeg, png e gif possuem padrões de compactação diretamente associados à qualidade de imagem. Grande parte das imagens encontradas na internet não usam recursos de compactação. Uma imagem jpeg que usa 100% de qualidade não mostra nenhuma diferença na qualidade em relação a mesma imagem com 95% de qualidade, embora o tamanho em bytes da segunda imagem mostre uma redução significante.

Se uma página comum tem um html de 30kbytes e uma imagem de 200kbytes, após o ziproxy a mesma página ocupará 200 bytes na conexão e a imagem 30 kbytes. Numa conexão discada, o ziproxy exibiria a página 10 vezes mais rápido que o modo comum.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Softwares necessários
   3. Instalação e configuração (ziproxy.conf)
   4. Implementando e testando
   5. Conclusão
Outros artigos deste autor

NoCatAuth - Construindo um firewall/gateway autenticado

Anti-SPAM ASK - Válidando remetentes por confirmação de mensagens

Freeradius - servidor radius eficiente e completo

Qmail e chkuser - fila de mensagens limpa

Acelerador de conexões dial-up para provedores de acesso

Leitura recomendada

Apache 2.2 - Introdução ao módulo mod_rewrite

Certificação Digital no Linux - Apache2

Sistemas Operacionais Online

Internet no Linux através de celular HTC TYTN II

Básico do Apache no Debian

  
Comentários
[1] Comentário enviado por alvaromo em 01/08/2006 - 11:28h

Muito interessante este programa. Show este seu artigo!

[2] Comentário enviado por edsonjbueno em 01/08/2006 - 18:12h

fiz tudo igual esta ai em um debian rc2, mas não navega de jeito algum tambem tenho o squid que esta funcionando blz, confgiurado na porta 3128, e o ziproxy na porta 8081, e configurado no explorer tambem no firefox e nada o conf esta igual a este ai não mudei nada somente a rede claro;... parece que esta faltando dns, mas como, não consegui enteder...

[3] Comentário enviado por patrickbrandao em 02/08/2006 - 08:06h

Olá Edson,

verifique se o software está rodando:
ps ax | grep ziproxy
e verifique também se a porta está aberta:
nmap localhost -p 8081
Se tiver firewall, desative para testar, o dns se configura em
/etc/resolv.conf

[4] Comentário enviado por guilhermerezende em 02/08/2006 - 11:56h

Belo Artigo Patrick!!! Vou tentar usá-lo em provedores wireless cujo acesso contratado seja link de 64K.
Abs.......................

[5] Comentário enviado por edsonjbueno em 03/08/2006 - 02:32h

esta tudo ok, Patrick a porta esta aberta o ziproxy esta em execução na porta 8081 e esta com DNS no resolv.conf, mas nada obrigado pela força...

[6] Comentário enviado por netgate em 03/08/2006 - 12:52h

Patrik nos do forum amamos a liberdade, por que vc nao torna seu MyAuth Gateway software livre e open sorce. Lembre-se que a liberdade so traz o crescimento

[7] Comentário enviado por patrickbrandao em 03/08/2006 - 14:18h

O que o MyAuth tem a vez com o artigo?! Tem soluções iguais a ele gratuitas, chillispot, notcatsplash, entre outros. Softwre livre nem sempre enche conta corrente! Eu contribuo muito com software livre, principalmente documentando, coisa que facilita e insentiva o uso e participação no desenvolvimento.

[8] Comentário enviado por Journeyman em 03/08/2006 - 15:11h

Pena que não tenho mais o meu cyber café powered by linux, senão eu testava,

muito legal esse software!

[9] Comentário enviado por pcnmota em 04/08/2006 - 11:55h

Parabens Patrick, continue ajudando a comunidade. Vc como pesquisador de novas tecnologias ja me ajudou muito com seus artigos.
T+

[10] Comentário enviado por thelinux em 04/08/2006 - 16:20h

Isso mesmo patrickbrandao. Concordo com você venda seu software. O teu artigo já ajudou bastante.

Ou netgat - vc é quem deveria começar a contribuir com algum artigo, dica etc.
Seria uma boa para o software livre.

Parabéns patrickbrandao.

[11] Comentário enviado por cleciorodrigo em 04/08/2006 - 20:17h

Ai concordo o Patrick colabora sim com a comunidade com tutoriais como este, e como ele mencionou ele tem que ganha o dele $$$, neh!

Falow

Clecio

[12] Comentário enviado por mf_alves em 11/08/2006 - 11:32h

Bom pessoal... eu segui os passos certos criei o /etc/ziproxy.conf mas ao tentar rodar o ziproxy deu a seguinte mensagem

Starting Ziproxy /usr/local/bin/ziproxy: error while loading shared libraries: libungif.so.4: cannot open shared object file: No such file or directory
OK

ja tentei procurar via apt mas não encontra a livraria...

estou usando um Debian.. com Squid ja rodando normal.

Caso alguem tenha a resolução do problema ficarei grato....

Obrigado.

[13] Comentário enviado por patrickbrandao em 18/08/2006 - 12:29h

Instala a libungif manualmente!

[14] Comentário enviado por marcosantiago em 23/09/2006 - 00:33h

Galera é o seguinte....
Tenho squid com autenticação rodando numa boa na porta 3128...desativei o squid para fazer o teste com o ziproxy e funcionou, mas quando ativo o squid e o ziproxy...não funciona...coloquei as funções:
NextProxy="127.0.0.1"
NextPort=3128

Mas não foi de jeito nenhum...
Uso o slackware 10.2 ! Se puderem ajudar desde já agradeço...
Ja ia esquecendo !
Parabéns Patrick !

[15] Comentário enviado por patrickbrandao em 25/09/2006 - 18:45h

Tente colocar uma ACL permitindo localhost no squid, e habilite todos os logs e veja no que dá!

Obrigado!

[16] Comentário enviado por drcfilho em 18/10/2006 - 00:40h

me tira uma duvida
se eu coloco a porta 8080 que é a do squid.. o que aconteceria?


Quando vou iniciar:
#etc/rc.d/rc.ziproxy start
Starting Ziproxy /etc/rc.d/rc.ziproxy: line 20: /var/run/ziproxy.pid: Arquivo ou diretório não encontrado
OK

[17] Comentário enviado por drcfilho em 18/10/2006 - 00:51h

resolvi... era só criar um diretorio /run dentro do diretorio /var que iniciou

mas me diga uma coisa.. e se for usado com o seu rc.net? como é que faz?

[18] Comentário enviado por cytron em 16/11/2006 - 17:40h

Legal esse ziproxy, estou testando ele no meu isp wireless, o ziproxy é tão simples que nem precisa de tutorial, o próprio ziproxy.conf já explica tudo. Mas esse guia do Patrick explica melhor do que os termos em inglês no conf.

Parabéns Patrick, se não fosse esse artigo eu nunca teria ouvido falar desse esquema. Eu sempre pensei numa coisa assim, mas jamais pensei que estaria por aí.

Agora estou com uma grande dúvida...

Será que o processamento para compactar no server e descompactar no cliente levaria mais tempo do que usar o squid sem passar pelo ziproxy???

Fiz uns testes aqui... não ví diferença na velocidade, mas ví diferênça na qualidade das imagens.

Ou seja, será que vale apena? Sobrecarregar o servidor fazendo compactação para todos os usuários? Se ao menos a compactação pudesse ser armazenada em cache, pois cada vez que é requisitado o mesmo objeto, o ziproxy comprime tudo denovo! Perda de tempo.

E o ziproxy tá com um bug, desabilitei a compressão de imagens mas ele ainda comprime.

Olhando no squid.conf parece que tem como fazer compressão também... será que é isso mesmo ou eu entendi errado?

A tag é essa: TAG: broken_vary_encoding

Dá uma olhada Patrick!

[19] Comentário enviado por cytron em 26/11/2006 - 19:16h

Poxa! Ninguém respondeu! Será que só eu estou testando o ziproxy?

Tudo bem! Aí vai outra, o zíproxy tá ficando estranho, agora quando dou um ps x para ver os processos, aparecem várias instâncias do ziproxy, "apesar de não ter ninguém navegando". Mas quando dou um stop todas elas somem, se tento matar apenas uma delas com um kill -9 aparecem várias outras. Se dou um start aparecem outra quantidade. Na primeira vez que usei ele estava tudo normal, apenas uma instância. Apesar dele ainda funcionar normal.
Fiz novos testes de desempenho e repito, ainda não ví benefício do uso. Nem mesmo naquela antecipação de resolver ips (50 por default).

ainda não testei o ziproxy em grande escala, nos próximos dias estarei fazendo isso e postarei aqui o resultado.

Vamos lá galera, vamos espremer o ziproxy para ver no que vai dar. Com a revolução da wireless em breve terá muita gente interessado nesse daemon, nosso conhecimento será útil a essas pessoas.

Valeu!

[20] Comentário enviado por patrickbrandao em 27/11/2006 - 14:33h

Olha só, sua duvida nao tem nada a ver com ziproxy, todo software decente que atende clientes em demanda cria um processo PAI e varios processos FILHOS que irão atender cada nova requisição.

Use o pstree para ver isso.

[21] Comentário enviado por pp1rp em 30/03/2007 - 15:09h

Existe um erro no ultimo passo da instalação. Estou usando a distro 9.1 do slackware com squid rodando normalmente. Segue abaixo os erros:
root@px2:/usr/local/src/ziproxy-2.2.1# make
make: *** No targets specified and no makefile found. Stop.
root@px2:/usr/local/src/ziproxy-2.2.1# make install
make: *** No rule to make target `install'. Stop.
root@px2:/usr/local/src/ziproxy-2.2.1# /etc/rc.d/rc.ziproxy start
Starting Ziproxy /etc/rc.d/rc.ziproxy: line 20: /usr/local/bin/ziproxy: No such file or directory
OK
Gostaria da ajuda de voceis para resolver esse problema.
Obrigado.

[22] Comentário enviado por cytron em 06/04/2007 - 13:02h

Estranho! Este erro é porque o make não está encontrando o Makefile, verifique se existe o arquivo Makefile (sem extensão), caso não exista ele foi apagado, baixe novamente o pacote que tudo vai dar certo. Mas não pega desse link que o Patrick tá mostrando não, vai direto na página do projeto que tem versão nova lá, a minha é a 2.1.1

[23] Comentário enviado por cytron em 06/04/2007 - 13:22h

Xiiiii!!! Prometi postar o resultado do meu teste com o ziproxy e acabei esquecendo, mas aqui está:

Não foi muito satisfatório, isso porque não agilizou significamente a ponto de valer a pena, talvez o motivo não seja o ziproxy, mas fora isso... Vários sites contendo flash começaram a dar problemas, devido a compactação do flash algumas vezes acontecia algum erro na compactação fazendo com que o flash não abrisse, o erro foi mais visível em sites bancários, após reiniciar o ziproxy o conteúdo em flash funcionava algumas horas, mas depois começava a não abrir novamente, bastava reiniciar o ziproxy pra tudo voltar ao normal.

Mesmo desabilitando a compressão de imagens ainda assim o ziproxy fazia compressão.

A resolução de nomes funcionou normalmente.

Para resumir, a minha opinião:

O ziproxy é uma excelente idéia e um grande recurso, no entanto, ainda está muito novinho, precisa amadurecer e quem sabe lá na versão 3 já esteja pronto para um mercado mais exigente.

O que eu fiz?

Proxy/cache transparente na porta 80
Ziproxy na porta 8080

Uma vez por mês envio um e-mail para meus clientes avisando que opcionalmente, podem configurar no navegador o proxy para a porta 8080 usufruindo assim da navegação compactada para maior velocidade.
Explico os possíveis problemas, as vantagens e tudo mais.

Resultado:

Os clientes estão satisfeitos por terem a opção de navegação acelerada, responderam a uma pesquisa para dizer se a aceleração era satisfatória, 70% disseram que sim.

É isso aí pessoal, qualquer dúvida pode dizer.

Aviso: Dificilmente vou passar por este artigo novamente, por tanto, se quiser falar comigo, me mande uma mensagem.

[24] Comentário enviado por mdajesus em 26/10/2007 - 20:06h

se puderem disponibilizar o rc.zipproxy fico agradecido pois o link pra baixar esta quebrado. obrigado.

[25] Comentário enviado por lopeston em 27/10/2007 - 01:43h

olá amigo, isso compensa usar em um server banda larga ? wireless ? com conexoes de 256 e 512k ? ou nao da muita diferenca ? muito obrigado, otimo tópico.
abraços

[26] Comentário enviado por buzaneli em 06/12/2007 - 23:47h

olá boa noite
eu tenho um servidor debian etch rodando o squid 2.6 uma beleza

instalei o ziproxy, está tudo certo como vc esplicou o dns está funcionado o ziproxy abriu a porta 8080, mas quando eu coloco no navegador mozila, o endereço do ziproxy, eu digito um site qualquer não aparece pagina nenhuma no meu navegado ela fica em branco, e no log do ziproxy ele diz que já acessou a pag vc pode me explicar o porque disso???

[27] Comentário enviado por martoss em 20/12/2007 - 09:53h

Nao consegui o rc.ziproxy start pois o link do artigo está quebrado, segui todos os passos e não deu nenhum erro, parei neste ponto, por não encontrar o script de inicializacao, se alguem puder me ajudar, favor mandar para martoss@hotmail.com.

Marinho


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts