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

We use cookies. Read the Privacy and Cookie Policy

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

По сравнению с 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!} !} !g;# добавляем переводы строки

$data =~ s! $!!;# удаляем последний перевод строки

$data =~ s! { ! {!g;# удаляем лишние пробелы внутри скобок

$data =~ s!; }!}!g;# удаляем лишние пробелы и синтаксис

# внутри скобок

print $data;

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

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

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