Разгони свой сайт - [11]

Шрифт
Интервал

(с этим в некоторых особо агрессивных случаях могут быть проблемы: CSS Tidy с определенными настройками перегруппировывает селекторы, и часть логики теряется).

Графические результаты

Что изображено на графиках? Выведен выигрыш (в процентах) относительно несжатого файла (по оси ординат отложены проценты). По оси абсцисс отложены номера файлов. Данные упорядочены по общей степени сжатия.

Вначале по каждому инструменту — отдельный график: выведены показатели для простой минимизации файлов, а также для минимизации с последующим архивированием. Серая линия на графике показывает степень сжатия (в процентах) файла при помощи простого gzip. Все инструменты приведены на одном графике (без архивирования). Действительно, заметен явный выигрыш для Minifier.

Рис. 2.7. Эффективность различных инструментов для минимизации CSS-файлов по сравнению с gzip

При архивировании, однако, все минимизаторы ведут себя примерно одинаково.

Рис. 2.8. Эффективность различных инструментов для минимизации CSS-файлов вместе с дополнительным архивированием по сравнению с gzip

Для уточнения картины при архивировании минимизированного файла отдельно было выделено его преимущество относительно обычного архивирования.

Рис. 2.9. Эффективность различных инструментов для минимизации CSS-файлов вместе с дополнительным архивированием, увеличенный масштаб

Тут уже видно отчетливо, что CSS Tidy ведет себя в целом лучше остальных скриптов (хотя, за исключением редких случаев, выигрыш не превосходит 6% относительно обычного архивирования).

Выводы

Во-первых, gzip и так показывает хорошее сжатие (до 81%), поэтому в большинстве случаев можно пользоваться только им.

Во-вторых, простая «подчистка мусора» (удаление всех символов, которые можно безболезненно убрать по спецификации CSS) вместе с архивированием дает весьма неплохой результат (общее сжатие до 83%) относительно других инструментов, но при этом не теряется логика селекторов (т. е. такое сжатие абсолютно безопасно).

В-третьих, замечен локальный выброс при файле небольшого размера. Он связан с тем, что gzip изначально его плохо сжал (вероятно, из-за маленькой исходной библиотеки слов), поэтому все минимизаторы показали себя на высоте. Однако файлы такого размера (порядка 1 Кб) стоит либо объединять с другими файлами (ибо тратить время на дополнительный запрос на сервер из-за такой мелочи не очень рационально), либо включить в сам HTML-файл. Так что данный выброс не стоит считать серьезным основанием для того, чтобы действительно использовать какой-либо минимизатор только из-за выигрыша в 3-4% от размера исходного файла.

В-четвертых, получается, что библиотека, жмущая лучше всего, проигрывает более умеренной сопернице при дополнительном архивировании результата. В нашем случае Minifier уступает CSS Tidy.

В общем, если мы не хотим дополнительно морочить себе голову, то можно просто архивировать CSS-файлы (в среднем выигрыш 79%) либо проводить простую «подчистку мусора» перед архивированием (в среднем выигрыш 82%). Если мы заботимся о количестве байтов, то стоит изучить действие CSS Tidy и Minifier (их прелесть заключается в алгоритме перегруппировки селекторов) и использовать их, либо разработать собственное приложение.

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

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

#!/usr/bin/perl

my $data = '';

open F, $ARGV[0] or die "Не получается открыть исходный файл: $!";

$data .= $_ while ;

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

2.4. JavaScript: жать или не жать?

Давайте рассмотрим далее сжатие JavaScript-файлов и проведем анализ всех наиболее известных средств статической минимизации JavaScript-кода. Нам нужно, по сути, ответить на три основных вопроса:

Имеет ли смысл пользоваться каким-либо минимизатором JavaScript-кода?

Есть ли среди них универсальное средство, показывающее лучшие результаты в подавляющем большинстве случаев?


Рекомендуем почитать
Продающие сайты от А до Я

По статистике у каждого второго пользователя сети Интернет есть свой сайт или страница в соцсетях. И все владельцы таких сайтов делятся на две категории – тех, кто зарабатывает с помощью своего сайта, и тех, кто не зарабатывает или даже теряет свои деньги. Вы можете создать прекрасный сайт, можете им гордиться, можете рассказывать, что ваша компания существует на рынке уже двадцать лет… Но парадокс в том, что вы должны создать сайт не для себя, а для своих клиентов, иначе не сможете убедить посетителя сайта купить товар или услугу именно у вас.Мы поможем вам создать продающий сайт – реального менеджера-продавца, круглосуточно продающего ваши товары и услуги, который привлечет бесплатных посетителей на ваш сайт и увеличит базу потенциальных клиентов, создаст продающий контент и автоматические воронки продаж, внедрит системы оплаты, приема и перевода платежей.


Ноутбук для ваших любимых родителей

Как включить ноутбук? Как его зарядить? С чего вообще начать? Зачем на клавиатуре столько кнопок? На какие нужно нажимать и в каком порядке, чтобы заработало/выключилось/включилось/открылось?..Эти и другие вопросы возникают у человека, никогда раньше не работавшего на ноутбуке. Но окружающим кажется, что включить ноутбук и начать с ним работать – это настолько элементарно, что и говорить не о чем. А многим людям терпеливое и толковое объяснение – нужно! Без четкого понимания, казалось бы, элементарных действий им сложно начать общение с ноутбуком.Эта книга все меняет! Потому что автор понимает тех, кто впервые начал общение с компьютерной техникой.


Продажи через интернет без воды

Эта книга-шпаргалка для всех рекламщиков и маркетологов на все времена. Основанная на многолетних исследованиях и практическом опыте. Данная книга помогла бесчисленному количеству людей увеличить продажи товаров и услуг, а также оптимизировать рекламный бюджет. В книге вы найдете более 1000 практических советов и рекламных инструментов. После прочтения этой книги: – вы окончательно разберетесь в типах сайтов, их преимуществах и недостатках; – будете иметь огромный список шаблонов продающих заголовков; получите рекомендации касательно написания текстов; – определитесь, какие рекламные инструменты стоит применять в каждой нише.


Социальные сети без страха для тех, кому за...

Чем полезен Интернет пожилому человеку? Прежде всего, неограниченными возможностями общения. Вы можете вести виртуальный дневник или общаться с друзьями в социальных сетях, делиться советами на форумах или переписываться с родственниками, живущими за рубежом, находить старых друзей и заводить новых.Книга поможет вам ориентироваться в мире социальных сетей и интерактивных сервисов, научит вас работать с ними и использовать все те возможности, которые они предоставляют. Материал книги изложен в доступной форме, что облегчает его восприятие, а различные способы выполнения тех или иных действий дадут вам возможность выбрать наиболее удобный способ именно для вас.


Дизайн-мышление: от разработки новых продуктов до проектирования бизнес-моделей

Методы и технологии, которые использует профессиональный дизайнер для создания предметов, могут быть очень успешно использованы для решения бизнес-задач, стоящих перед руководителями компаний. И это не только разработка нового продукта. Дизайн-мышление эффективно помогает переосмыслить суть бизнеса, лучше понять потребности клиентов, найти уникальную и прибыльную нишу для стартапа и даже реализовать благотворительный проект.Тим Браун, глава одной из самых успешных дизайн-компаний мира, делится своей концепцией дизайн-мышления и на многочисленных примерах доказывает ее эффективность.Все права защищены.Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.Правовую поддержку издательства обеспечивает юридическая фирма «Вегас-Лекс»VEGAS LEX.


Противодействие черному PR в Интернете

Черный PR сегодня активно перемещается в Интернет. В свое время кольт сделал людей равными. Сегодня Интернет уравнял финансово сильных и слабых в медиапространстве. Глобальная сеть позволяет рядовому человеку разорить могущественную корпорацию. Маленькая компания может эффективно противостоять транснациональному монстру, не располагая никакими финансами. Умение отражать информационные атаки стало на редкость насущной проблемой для любого бизнеса.В этой книге показаны все необходимые для отражения информационного нападения в Интернет инструменты и раскрыты секреты их применения.