Подтвердить что ты не робот

Есть ли польза для минимизации JavaScript до его загрузки?

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

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

4b9b3361

Ответ 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, поэтому довольно легко проверить.