Есть ли польза для минимизации JavaScript до его загрузки?
Есть ли какая-то действительная цель для минимизации перед сжатием? Кажется крайне маловероятным, что gzipped файл меньше, если он сначала минимизируется.
Я спрашиваю, потому что диагностировать производственные проблемы в минифицированном коде значительно сложнее, и мне интересно, не подвергаются ли люди этому цели.
Ответы
Ответ 1
Да, есть определенная польза.
Минимизация - сжатие с потерями, тогда как gzipping - без потерь. Ergo, с помощью которого вы удаляете ненужные данные (например, комментарии и длинные переменные имена), которые всегда помогут уменьшить размер вашего файла. Даже с 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;
}
Или, если minifier умный:
function foo(a){
return a;
}
Весь код дает те же результаты, но размер сильно отличается.
Ответ 2
Что касается размера необработанных файлов, вот пример (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
Таким образом, миниатюрная версия составляет примерно половину размера.
Ответ 3
Может быть. Помимо удаления пробелов, минимизация JavaScript может привести к повторению одного и того же текста, что может означать чуть более высокое сжатие с помощью gzip. К счастью, это легко сделать до и после, так как инструмент командной строки gzip
, обычный в * nix и доступный для Windows, использует такой же алгоритм сжатия (хотя и не совсем в том же формате).
Ответ 4
Это также может помочь ускорить разбор кода JavaScript в браузере. В зависимости от размера ваших файлов браузер может потратить значительное количество времени на разбор и токенизацию файла, который будет уменьшен путем минимизации.
Конечно, только бенчмаркинг и профилирование скажут вам, действительно ли это будет выгодным для вашей конкретной ситуации.
То, что я нахожу, работает лучше всего, поэтому я сохраняю как минитизированные, так и неминифицированные версии всех моих .js файлов на своем веб-сайте и просто использую переключатель конфигурации для переключения между ними. Таким образом, нормальное производство может использовать мини-версию, а затем, если мне нужно что-то отлаживать, просто переверните переключатель, и вместо него будет отменена неминифицированная версия. (Процесс сборки гарантирует, что миниатюрные и неминифицированные версии синхронизируются, конечно)
Ответ 5
Я всегда видел заметное сокращение конечного числа байтов, когда я минимизирую перед gzip.
У меня есть 20-минутный hack job php script, который взаимодействует с компрессором yui и компилятором закрытия googles. Он показывает мне до и после байтов, включая после gzip, поэтому довольно легко проверить.