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

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

По сравнению с 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 применить не удается.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Пример

Из книги автора

Пример Мы запускаем программу, требуя от нее установки соглашения о безопасности, касающегося трафика между узлами 127.0.0.1 и 127.0.0.1 (то есть локального трафика):macosx % add 127.0.0.1 127.0.0.1 HMAC-SHA-1-96 160  0123456789abcdef0123456789abcdef01234567Sending add message:SADB Message Add, errno 0, satype IPsec AH, seq 0, pid 6246SA: SPI=39030 Replay Window=0


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

Из книги автора

14.4. Практический пример А теперь рассмотрим более серьезный пример. Этот пример частично позаимствован мною из руководства DNS-HOWTO. Но прежде чем перейти непосредственно к практике, попробую объяснить некоторые термины, которые будут встречаться ниже.Прежде всего,


Часть 1 Как добыть 100 000 друзей? Практический опыт

Из книги автора

Часть 1 Как добыть 100 000 друзей? Практический опыт Эту книгу я разделил на две части. Первая посвящена тому, как собрать большую аудиторию в Facebook, вторая – как начать «дружить» с ней, генерировать продажи и поддерживать связь. Почему я выбрал именно такую


Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

Из книги автора

Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя #!/bin/bash# timeout.sh# Автор: Stephane Chazelas,# дополнен автором документа.INTERVAL=5 # предел времени ожиданияtimedout_read() { timeout=$1 varname=$2 old_tty_settings=`stty -g` stty -icanon min 0 time ${timeout}0 eval read $varname # или просто read $varname


Пример 10-27. Простой пример сравнения строк

Из книги автора

Пример 10-27. Простой пример сравнения строк #!/bin/bash# match-string.sh: простое сравнение строкmatch_string (){ MATCH=0 NOMATCH=90 PARAMS=2 # Функция требует два входных аргумента. BAD_PARAMS=91 [ $# -eq $PARAMS ] || return $BAD_PARAMS case "$1" in "$2") return $MATCH;; * ) return $NOMATCH;; esac}a=oneb=twoc=threed=twomatch_string $a # неверное число


Пример 12-20. Пример форматирования списка файлов в каталоге

Из книги автора

Пример 12-20. Пример форматирования списка файлов в каталоге #!/bin/bash# За основу сценария взят пример "man column".(printf "PERMISSIONS LINKS OWNER GROUP SIZE DATE TIME PROG-NAME " ; ls -l | sed 1d) | column -t# Команда "sed 1d" удаляет первую строку, выводимую командой ls,#+ (для локали "С" это строка: "total N",#+ где "N" -- общее


Пример 12-45. Пример работы с m4

Из книги автора

Пример 12-45. Пример работы с m4 #!/bin/bash# m4.sh: Демонстрация некоторых возможносией макропроцессора m4# Строкиstring=abcdA01echo "len($string)" | m4 # 7echo "substr($string,4)" | m4 # A01echo "regexp($string,[0-1][0-1],&Z)" | m4 # 01Z# Арифметикаecho "incr(22)" | m4 # 23echo "eval(99 / 3)" | m4 #


Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"

Из книги автора

Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков" #!/bin/bashARGS=1 # Ожидаемое число аргументов.E_BADARGS=65 # Код завершения, если число аргументов меньше ожидаемого.test $# -ne $ARGS && echo "Порядок использования: `basename $0` $ARGS аргумент(а)(ов)" && exit $E_BADARGS# Если


Пример 25-8. Пример реализации алгоритма Решето Эратосфена

Из книги автора

Пример 25-8. Пример реализации алгоритма Решето Эратосфена #!/bin/bash# sieve.sh# Решето Эратосфена# Очень старый алгоритм поиска простых чисел.# Этот сценарий выполняется во много раз медленнее# чем аналогичная программа на C.LOWER_LIMIT=1 # Начиная с 1.UPPER_LIMIT=1000 # До 1000.# (Вы можете


4.4. Практический экзорцизм – изгоняем «зло-код» голыми руками

Из книги автора

4.4. Практический экзорцизм – изгоняем «зло-код» голыми руками Проверено автором. Если в процессе работы антивирусов, чистильщиков, сканеров и прочего вы все-таки почувствовали, что экзорцист – это вы, а порции адреналина получает кто-то другой, то непременно, даже не


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

Из книги автора

Практический аспект Простота проблемы создает своеобразный парадокс: пытливый новичок построит контрпример за считанные минуты, в реальной практике изо дня в день возникают ошибки классовой корректности систем, но нарушения системной корректности даже в больших,


Практический алгоритм миграции как ключ к успеху в современном софтостроении Сергей Голубицкий

Из книги автора

Практический алгоритм миграции как ключ к успеху в современном софтостроении Сергей Голубицкий Опубликовано 25 апреля 2013Сегодня в рамках «Битого Пикселя» мы помедитируем над важной темой, которая никогда не попадает в поле зрения IT-прессы: процессом миграции от одной