Como compactar HTML no CodeIgniter

25 de janeiro de 2012, em Dicas, Tutoriais, por

CodeIgniter: como compactar HTML (imagem ilustrativa)

Exatamente ontem surgiu num repositório fork do CodeIgniter uma novidade muito interessante: uma feature para compactar HTML! Apesar de não ser oficial, fiz alguns testes e está tudo funcionando muito bem! Portanto, compactar HTML no CodeIgniter agora é possível e, acredite, os resultados são incríveis!

Baixando a nova classe de Output

A primeira coisa a se fazer é substituir a classe nativa de Output do CodeIgniter pela que tem as modificações. Então, copie a Output Class modificada e coloque em /system/core (para os mais cautelosos, um backup é sempre bem-vindo).

Ativando a compactação de HTML

Assim como pode ser visto na pull request da compatação de HTML no CodeIgniter, a partir do momento em que a nova Output Class está presente, é preciso ativar a funcionalidade de compactar através de uma diretiva de configuração.

Por padrão, esta diretiva estaria presente em application/config/config.php, mas, como ela não existe, é preciso criá-la. Então, em qualquer ponto do arquivo config.php (ou outro arquivo de configuração que você esteja usando), inclua a seguinte diretiva:

$config['minify_output'] = TRUE;

E pronto! A partir de agora o CodeIgniter comprime toda e qualquer saída de HTML (e CSS inline) que passar pela Output (que, caso você esteja usando corretamente a abordagem MVC no CodeIgniter, significa a exibição nas views).

Conclusão sobre compactação de HTML no CodeIgniter

Apesar de (ainda) não ser um recurso oficial do CI e que, não há que se duvidar, ainda ganhará melhorias, realmente vale a pena, pelo menos, testar a compactação (embora já esteja estável o suficiente para ser usado em ambiente de produção).

<update>
Como esperado, as alterações na classe de Output já foram para o repositório oficial. O pessoal ainda está discutindo melhorias, portanto, fique ligado!
</update>

Claro que há muitos fatores a se considerar, mas estima-se que esta compactação reduza o tamanho da saída HTML em 10~15% (chegando, em alguns casos, a incríveis 30%), o que é bastante considerável! Com isso, a transferência de recursos no servidor e exibição de conteúdos, consequentemente, também ficam mais rápidos.

E tudo isso pode ficar ainda melhor quando se usa cache para os conteúdos! Mas isso já é assunto para outro artigo… ;-)

15 comentários em "Como compactar HTML no CodeIgniter"

gravatar

Hugo Fittipaldi  em 25 de janeiro de 2012

Oi Tárcio, quando eu fiz o indicado, a página simplesmente carregou o conteúdo da página https://github.com/atiredmachine/CodeIgniter/blob

gravatar

Hugo Fittipaldi  em 25 de janeiro de 2012

Correção: houve um erro ao baixar o arquivo. Baixei de novo e funcionou!

gravatar

Tárcio Zemel  em 25 de janeiro de 2012

Maravilha! ;-)

gravatar

Marcelo Diniz  em 26 de janeiro de 2012

Muito bom mesmo, mas fiz alguns testes e tive um erro, não sei ao certo pq, mas me passava links com meusite.com.br/a#link e não entendi pq ele colocava esse "a#" , não tive tempo para olhar ainda o pq disso, mas se eu tiver um tempo dou uma olhada, se não espero atualização.

gravatar

Tárcio Zemel  em 26 de janeiro de 2012

Que curioso, rapaz… Apesar de ter funcionado perfeito pra mim, se descobrir algo, diga pra gente!

gravatar

thor  em 2 de fevereiro de 2012

poxa, gostaria que saisse um plugin do CI para o netbeans !!! ja existem alguns plugins de frameworks por la …

gravatar

Anderson  em 6 de abril de 2012

Tácio, o processo de compactação é o mesmo que deve ser usado para doiminuir o peso d euma página no wordpress?

gravatar

Tárcio Zemel  em 8 de abril de 2012

Na verdade, usando CodeIgniter, WordPress, ou qualquer outro, pensar na performance do site é sempre interessante. Então, quando for possível usar compactação, não somente para HTML, mas, também, para JavaScript e CSS, é sempre bom! :-)

gravatar

Francis  em 12 de maio de 2012

É a primeira vez que vejo um fw php utilizando compactação de html como oficial ;p
Combinada com a de cachê, tudo se torna perfeitamente estável tanto para o usuário também e não apenas alivia o tempo de execução do lado do servidor.

gravatar

Fábio Pedrazzi  em 5 de junho de 2012

salva o codigo como application/core/MY_Output.php q aí não precisar gravar no /system/core

gravatar

Tárcio Zemel  em 12 de junho de 2012

Boa, dá pra fazer isso, também! Obrigado pelo lembrete! ;-)

gravatar

leo  em 27 de fevereiro de 2015

A partir de que versão este recurso está como oficial?

gravatar

Euripedes Antunes  em 20 de outubro de 2016

Obtive um erro, uso a versão 2.1 e quando fiz a alteração, simplesmente não consigo logar no sistema. É como se o botão "login" não funcionasse!

gravatar

famosa assento extensa  em 15 de junho de 2017

Muito interessante seu blogue. Você escreve muito e estaca claro pra todo gênero
de de pessoa o que você quer manifestar. Gostei.

gravatar

ninfetinhas  em 15 de junho de 2017

Você estuda alguma dimensão de marketing ou propaganda?

Pergunto isso porque você ridige bastante muito, congratulações!

    Comente!