Como “encolher” facilmente o HTML de seu blog
Uma das recomendações comuns quanto à aceleração da carga das páginas de um site diz respeito ao “encolhimento” (porque não consigo encontrar uma tradução satisfatória para minify) dos códigos entregues ao visitante: o HTML da página, as folhas de estilo (CSS) e os scripts JavaScript. Este processo consiste simplesmente na retirada de toda formatação, todos os espaços em branco, todos os comentários, tudo o que torna o código legível a um ser humano, mas que é totalmente inútil para a máquina.
Em se tratando de blogs WordPress há muitas maneiras de se fazer isso, sendo as principais:
- usar um plugin que faça o encolhimento dos arquivos;
- usar componentes de servidor (como o PageSpeed) que faça automaticamente este trabalho em — praticamente — qualquer página do site;
- proceder o “encolhimento” manual de todos os recursos que serão utilizados no site, de forma a ter-se controle absoluto sobre o que vai para o navegador.
Todas as abordagens têm efeitos colaterais, principalmente as duas primeiras devido à incapacidade inerente ao software de saber as dependências e particularidades dos recursos entre si, frequentemente levando à quebra de funcionalidades das páginas e consequente frustração.
Os módulos de PageSpeed (mod_pagespeed do Apache e ngx_pagespeed do Nginx) até que fazem um bom trabalho, mas ainda é necessária muita intervenção humana para que os objetivos sejam efetivamente alcançados.
Os plugins de WordPress (já falei do melhorzinho — em minha opinião) dão uma força, mas é comum que causem sobrecargas e invalidem o cache, o que os torna inadequados e até perigosos.
Entretanto, pelo menos o HTML da página pode ser encolhido sem que para isso seja feito uso de nenhum plugin ou módulo de servidor. Basta você adicionar um trecho de código no functions.php
do tema, e ser feliz.
O código, que eu sei que você não aguenta esperar, está armazenado no Google Code, logo pode mudar a qualquer momento, a despeito da minha vontade.
Observe que há no código quatro configurações possíveis, e que devem ser experimentadas caso você encontre problemas com sua página (principalmente para quem usa Adsense, pois os anúncios podem sumir, ou quebrar o leiaute do site). Logo no começo do arquivo, na definição da classe WP_HTML_Compression
, temos:
<?php class WP_HTML_Compression { // Settings protected $compress_css = true; protected $compress_js = true; protected $info_comment = true; protected $remove_comments = true; // restante do código } ?>
A variável $compress_css
define se o CSS inline deve ser miniaturizado ou se deve ser mantido intocado. Pelos meus testes, é 100% seguro deixar o script agir sobre o CSS, junto com o HTML.
Já a variável $compress_js
requer mais atenção: ela indica se o script deve encolher o JavaScript inline ou se deve deixar exatamente como estiver. No meu caso, não tive problemas com nada ao encolher o JavaScript, mas quem usa Adsense deve experimentar bem, pois há incontáveis relatos de páginas que pararam de exibir anúncios apenas por não prestar atenção a esta informação.
Por padrão o script vai adicionar um comentário à página indicando qual foi o ganho que ela teve ao ser compactada por ele, o que é controlado pela variável $info_comment
. Particularmente acho desnecessário e feio esse comentário, razão pela qual costumo usar esta variável em false
.
Por fim a variável $remove_comments
instrui se o código deve remover os comentários HTML (<!-- -->
) ou mantê-los. Normalmente é seguro excluir comentários das páginas, mas pode haver casos em que seja necessário mantê-los.
Um plugin para ser feliz
Nem todo mundo tem saco (ou conhecimento, ou desejo) para ficar fuçando no functions.php
do tema. Até porque se a pessoa resolver trocar ou mesmo atualizar o tema do blog, já era: tem que fazer todo um retrabalho com o fito de fazer o blog voltar a ter as funcionalidades de antes.
Nesse caso, o plugin WP Super Minify faz praticamente a mesma coisa que o código acima, mas tem uma interface fácil de usar para definir as opções de funcionamento, e pode ser desativado sem precisar remover código de lugar algum.
Atualmente tenho utilizado o Better WordPress Minify que vem fazendo um trabalho bem mais robusto ao compactar os arquivos.
Não sei se por falta de experiência ou limitação, tanto do plugin citado quanto do script, ao se utilizar um tema child, ele não faz a compactação dos dados do pai, apenas do filho.
Já o BWP Minify, na primeira visita ao site como administrador, ele lista todos arquivos chamados e faz a lista automática de itens que ele tem que trabalhar (podendo ser alterada).
Enfim, uma opção mais robusta pra quem não quer ter dor de cabeça com códigos.
Já utilizei o BWP Minify, mas acabei preso em algumas dificuldades impostas por ele.
Atualmente estou usando o módulo de “minify” do W3 Total Cache, em diversos blogs, e estou bastante satisfeito. Mas não cheguei a experimentar com temas filhos, é um teste interessante de se fazer.