Практический пример

По сравнению с JavaScript, сжимать CSS относительно просто. В силу практически полного отсутствия строк, заключенных в кавычки (в основном пути и названия шрифтов), мы можем изничтожить проблемы обычными регулярными выражениями. Когда же мы действительно встречаемся со строкой в кавычках, то мы можем объединить множественные пробелы в один (так как мы не рассчитываем обнаружить их в количестве больше чем 1 в URL или названиях шрифтов). Простейший скрипт на Perl может обеспечить нам все необходимые преобразования:

#!/usr/bin/perl

my $data = '';
open F, $ARGV[0] or die "Не получается открыть исходный файл: $!";
$data .= $_ while <F>;
close F;

$data =~ s!\/\*(.*?)\*\/!!g;   # удаляем комментарии
$data =~ s!\s+! !g;            # сжимаем пробелы
$data =~ s!\} !}\n!g;          # добавляем переводы строки
$data =~ s!\n$!!;              # удаляем последний перевод строки
$data =~ s! \{ ! {!g;          # удаляем лишние пробелы внутри скобок
$data =~ s!; \}!}!g;           # удаляем лишние пробелы и синтаксис
                               # внутри скобок
print $data;

Осталось прогнать все наши CSS-файлы через этот скрипт, чтобы сжать их, например так:

perl compress.pl site.source.css > site.compress.css

Путем простых текстовых преобразований можно уменьшить общий объем передаваемых данных почти на 50% (конечный выигрыш очень сильно зависит от стиля кодирования; обычно будет получен менее впечатляющий результат), что обеспечит более быструю работу сайта для конечных пользователей в том случае, если gzip применить не удается.