Compactando o (X)HTML/CSS de suas páginas
Postado por: Anderson Custódio emFiz um código super simples, para deixar qualquer (X)HTML ou CSS em uma única linha, sem tabs e sem comentários.
Sobre o CSS seria interessante você usar junto com esta dica do Bruno Alves.
Bom, primeiro lhe apresento a função que tira todos os Enters, tabs, comentários CSS e (X)HTML. Basta colocar no index.php de seu site.
function strip($buffer) {
return trim(preg_replace('/\n|\r|\t|/', ' ', $buffer));
}
Agora em seguida é só usar o buffer do PHP com a função strip no callback.
Exemplo com o index do WordPress:
define('WP_USE_THEMES', true);
function strip($buffer) {
return trim(preg_replace('/\n|\r|\t|/', ' ', $buffer));
}
ob_start('strip');
require('./wp-blog-header.php');
ob_end_flush();
E pronto, todo (X)HTML que seu WordPress gerar vai ficar em uma única linha e sem comentários. Lembrando que você pode usar este código em qualquer sistema. É só usar o código corretamente no index.
PS: Sobre o vídeo tutorial “Como trabalhar com URLs Amigáveis” peço desculpas pela demora, nele vou ensinar técnicas avançadas para gerenciar URLs e como usar slugs.
Update: Como haviam dito o expressão para remover os comentários teriam que ser mais complexa, como na época conhecia só o básico não cheguei a entender os comentários. Para não ter problema está apenas a parte que deixa todo código em uma única linha. Desculpe, logo farei um post sobre expressões regulares e mostrarei como fazer essa expressão. Até lá














Ótimo código, ótima sacada Anderson.
Cara a solução parece ser boa mas o que acontece se eu tiver comentários condicionais?
Mas isto também daria problema com a formatação de textos dentro da tag não daria? Tem como colocar uma “negação” para “(.*)”?
tag PRE, desculpe.
Mas isto também daria problema com a formatação de textos dentro da tag PRE não daria? Tem como colocar uma “negação” para “TAGPRE(.*)TAGPRE”?
(não tem como postar tags como textp aqui nos comentários? rsrs)
Antes tarde do que nunca, em breve irei postar um novo post com uma solução. Quem me conhece sabe que meu em breve pode ser bem demorado, ando muito sem tempo
Obrigado!
@Diego Teixeira: Teria que fazer alguns ifs para ignorar, depois vou fazer um, só não digo quando que to sem tempo, e estou devendo uma video aula de URLs Amigáveis faz tempo. =/
Update: Nade de ifs falei besteira, é só expressão regular e nada mais
A dica é boa, mas ainda prefiro usar o Minify.
http://code.google.com/p/minify/
Vocês sempre compactam os códigos Xhtml/CSS, ou levam em consideração a projeção do projeto?
Acho complicado o uso da compactação por dificultar a manuteção do código.
O que você acham sobre isso, manutenção?
Ótimo post!
mas essa compactação é somente na saida, ou sejá somente para o usuário final.
Hum…Entendido.
Estava lendo por esses dias sobre outra forma. Onde no upload é feita essa compactação. Dessa forma ficaria complicado a manutenção.
Mas sendo na saída realmente não vejo o menor problema.
Valeu!
Vlw pela função usei ela pra compactar os arquivos XML de Feed e sitemap