Там некоторая допустимая цель к уменьшению перед сжатием? Кажется очень маловероятным, что gzipped файл меньше, если это уменьшило сначала.
Я спрашиваю, потому что диагностирование производственных проблем в уменьшенном коде является существенно более трудным, и я задаюсь вопросом, подчиняются ли люди этому ни для какой цели.
Да, однозначно преимущество есть.
Минимизация - это сжатие с потерями, тогда как сжатие с помощью gzip выполняется без потерь. Следовательно, с уменьшением вы удаляете ненужные данные (например, комментарии и длинные имена переменных), что всегда поможет уменьшить размер вашего файла. Даже с 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;
}
Весь код дает одинаковые результаты, но размер сильно отличается.
Я всегда видел заметное уменьшение конечного количества байт, когда я минифицировал перед gzip.
У меня есть 20-минутный php-скрипт, который взаимодействует с yui compressor и googles closure compiler. Он показывает мне байты до и после, включая после gzip, так что мне довольно легко проверить.
Может быть. Помимо удаления пробелов, минимизация JavaScript может привести к большему количеству повторений одного и того же текста, что может означать немного более высокое сжатие с помощью gzip.К счастью, это легко сделать до и после, поскольку инструмент командной строки gzip
, распространенный в * nix и , доступный для Windows , использует один и тот же алгоритм сжатия (хотя и не совсем тот же формат). ).
Это также может помочь ускорить синтаксический анализ кода javascript в браузере. В зависимости от размера ваших файлов браузер может потратить значительное количество времени на синтаксический анализ и разметку файла, который будет уменьшен за счет минимизации.
Конечно, только сравнительный анализ и профилирование скажут вам, действительно ли это будет полезно для вашей конкретной ситуации.
Я считаю, что лучше всего я храню на своем веб-сайте как минифицированные, так и неминифицированные версии всех моих файлов .js и просто использую переключатель конфигурации для переключения между ними. Таким образом, обычное производство может использовать уменьшенную версию, а затем, если мне нужно что-то отладить, просто нажмите переключатель, и вместо этого будет обслуживаться неминифицированная версия. (Конечно, процесс сборки гарантирует, что минифицированные и неминифицированные версии синхронизированы)
Что касается размера необработанного файла, вот пример (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
Таким образом, уменьшенная версия примерно вдвое меньше.