Gzip против minify - PullRequest
       79

Gzip против minify

128 голосов
/ 30 апреля 2009

На днях у меня было несколько оживленное обсуждение минимизации Javascript и CSS по сравнению с кем-то, кто предпочитает использовать Gzip.

Я позвоню этому человеку X.

X сказал, что Gzip уже минимизирует код, поскольку он архивирует ваши файлы.

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

У меня нет метода тестирования, но я считаю, что Gzip этого кода:

.a1 {
    background-color:#FFFFFF;
    padding: 40px 40px 40px 40px;
}

По-прежнему будет больше, чем Gzip этого кода:

.a1{body:background-color:#FFF;padding:40px}

Есть ли кто-нибудь, кто может доказать это правильно или неправильно?
И, пожалуйста, не говорите: «Это правильно, потому что это то, что я всегда использовал».

Я прошу научные доказательства здесь.

Ответы [ 13 ]

0 голосов
/ 30 апреля 2009

конечно, вы можете проверить - запишите свой файл и скопируйте его с помощью zlib . Вы также можете попробовать использовать утилиту "gzip".

Вернемся к вашему вопросу - нет определенной связи между длиной источника и сжатым результатом. ключевым моментом является «энтропия» (насколько различны каждый элемент в источнике).

Итак, это зависит от того, каков ваш источник. например, множество непрерывных пространств (например,> 1000) может быть сжато так же, как и несколько (например, <10) пространств.

0 голосов
/ 30 апреля 2009

Конечно, «человеческое» сжатие с потерями, которое сохраняет макет или некоторые другие важные вещи и удаляет ненужный мусор (пробелы, комментарии, лишние вещи и т. Д.) Будет лучше, чем сжатие без потерь gZip.

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

Кстати, для CSS есть такие инструменты, как CSS-компрессор , которые сделают работу с потерями за вас.

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

0 голосов
/ 30 апреля 2009

Существует очень простой метод проверки: создайте файл, состоящий только из пробелов, и другой файл, который действительно пуст. Затем Gzip оба и сравните их размеры. Файл с пробелами в нем, конечно, будет больше.

...