Есть ли польза от минимизации JavaScript перед его распаковкой? - PullRequest
31 голосов
/ 07 апреля 2010

Есть ли какая-то действительная цель минимизации перед сжатием? Весьма маловероятно, что сжатый файл будет меньше, если его сначала свернуть.

Я спрашиваю, потому что диагностировать производственные проблемы в минимизированном коде значительно сложнее, и мне интересно, подвергают ли себя люди этому без цели.

Ответы [ 5 ]

26 голосов
/ 07 апреля 2010

Что касается необработанного размера файла, вот пример (jQuery 1.4.2):

$ curl http://code.jquery.com/jquery-1.4.2.js | gzip > jquery.gz
$ curl http://code.jquery.com/jquery-1.4.2.min.js | gzip > jquery-min.gz

$ ls -la jquery*
-rw-r--r--  1 me  staff  24545 Apr  7 12:02 jquery-min.gz
-rw-r--r--  1 me  staff  45978 Apr  7 12:02 jquery.gz

Таким образом, уменьшенная версия составляет примерно половину размера.

22 голосов
/ 07 апреля 2010

Да, безусловно, выгода.

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

Пример:

function foo(this_is_my_variable){
    var this_is_my_other_variable = 0;
    this_is_my_other_variable = this_is_my_other_variable + this_is_my_variable;
    return this_is_my_other_variable;
}

Это может быть уменьшено до:

function foo(a){
    var b = 0;
    b = b +a;
    return b;
}

Или, если минификатор умный:

function foo(a){
    return a;
}

Весь код дает одинаковые результаты, но его размер сильно отличается.

3 голосов
/ 07 апреля 2010

Может быть. Помимо удаления пробелов, минимизация JavaScript может привести к большему количеству повторений одного и того же текста, что может означать немного более высокое сжатие с помощью gzip. К счастью, это легко сделать до и после, поскольку инструмент командной строки gzip, распространенный в * nix и , доступный для Windows , использует один и тот же алгоритм сжатия (хотя и не совсем тот же формат).

2 голосов
/ 07 апреля 2010

Это также может помочь ускорить анализ кода javascript в браузере. В зависимости от размера ваших файлов браузер может потратить значительное количество времени на анализ и токенизацию файла, что будет уменьшено при минимизации.

Конечно, только бенчмаркинг и профилирование скажут вам, принесет ли это пользу для вашей конкретной ситуации.

Лучше всего мне подходит то, что я храню на своем веб-сайте как минимизированные, так и не минимизированные версии всех моих файлов .js и просто использую переключатель конфигурации для переключения между ними. Таким образом, обычное производство может использовать минимизированную версию, а затем, если мне нужно что-то отладить, просто нажмите переключатель, и вместо этого будет запущена неминифицированная версия. (Процесс сборки гарантирует, что минимизированные и не минимизированные версии, конечно, синхронизируются)

1 голос
/ 07 апреля 2010

Я всегда видел заметное уменьшение конечного числа байтов при минимизации перед gzip.

У меня есть 20-минутный скрипт php для хакерских заданий, который взаимодействует с компрессором yui и компилятором googles closure.Он показывает мне байты до и после, в том числе после gzip, поэтому мне довольно легко это проверить.

...