Ravakahn Gladior
Ravakahn Gladior Ravakahn foi um gladiador que, na Roma Antiga, lutava com outros gladiadores ou animais, às vezes, até a morte, para o entretenimento do público romano. há 4 anos

Compactar CSS com PHP

Compactar CSS com PHP

Pra quem trabalha com grandes portais, sabe muito bem que qualquer Kbyte economizado é muito bem vindo. Partindo dessa necessidade, resolvi procurar alguma coisa pra compactar os arquivos CSS automaticamente.

Acabei encontrando uma solução criada pelo desenvolvedor alemão Reinhold Weber.

header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
  /* remove comments */
  $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
  /* remove tabs, spaces, newlines, etc. */
  $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
  return $buffer;
}

/* your css files */
include('master.css');
include('typography.css');
include('grid.css');
include('print.css');
include('handheld.css');
ob_end_flush();

Ainda não satisfeito com o resultado, eu dei uma melhorada na função que remove caracteres desnecessários do CSS. Ficou assim:

function comprimirCss($css) {
  // Remover comentarios
  $css = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $css);
  // Remover Tabs e NewLines
  $css = preg_replace('#(\r|\n|\t)#', '', $css);
  // Remover caracteres com espaços extras
  $css = preg_replace('#[ ]*([,:;\{\}])[ ]*#', '$1', $css);
  // Extras
  $css = strtr($css, array(
      ';}' => '}'
  ));
  return $css;
}

O resultado final? Consegui diminuir o tamanho do CSS de 13KB para 9.2KB. E com o gzip ativo no apache, o arquivo transferido para o usuário fica com apenas 2.4KB.

Fui.