Почему минимизация HTML / Javascript полезна


14

Почему минимизация HTML / Javascript полезна, когда протокол HTTP уже поддерживает сжатие данных gzip?

Я понимаю, что минимизация Javascript / HTML потенциально может значительно уменьшить размер файлов Javascript / HTML, удаляя ненужные пробелы и, возможно, переименовывая переменные в несколько букв каждая, но алгоритм LZW не особенно хорошо работает, когда много повторений символы (например, много пробелов?)

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

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

Итак, какую производительность вы действительно получаете от минимизации Javascript / HTML, когда уже значительно уменьшаете размер файла с помощью сжатия gzip?

Ответы:


11

Поскольку сжатие GZIP имеет свои собственные издержки (ЦП). Минификация - это первое «низкое зависание» сжатия, которое может быть применено без удара ЦП.

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

Кроме того, с минификацией у вас меньше gzip.


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

@aaberg Несмотря на это, это больше кэшированных данных на сервере. (не то, что кэширование не хорошо)
chills42

@ chilis42: серверы могут обслуживать предварительно сжатый файл из самой файловой системы, если это проблема.
Herby

+1 за шкалу. Если у вас есть 10 пользователей и 100 хитов в день, то это неважно. Если вам нужно 100 000 обращений в час, это значительная экономия.
SoylentGray

2
Что-то подсказывает мне, что при запуске полнофункционального компилятора JavaScript и нескольких оптимизационных прогонов для внутреннего представления, все это часто реализуется в Java не с низкой загрузкой ЦП .
Волков Олег Викторович

5

Minification + gzip обычно дает лучшие результаты, потому что gzip - это общий алгоритм, специально не адаптированный к тому или иному вводу, в то время как minificator знает о его содержимом и может выполнять работу, которую не может выполнить общий алгоритм сжатия. Он также может позволить себе быть с потерями (подумайте: полностью исключите комментарии и пробелы - это 100% сжатие для этих данных, как вы можете победить это?), В то время как обычное сжатие не может.


2

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


1
+1: минификация о сбережении в совокупности. Это может помочь отдельному запросу быть быстрее, но суть в том, чтобы уменьшить использование полосы пропускания со временем.
Джоэл Этертон

1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.