Есть ли смысл минимизировать JavaScript, если у вас включено сжатие? - PullRequest
18 голосов
/ 13 июля 2010

Если на вашем веб-сайте включено сжатие с использованием deflate / zip, есть ли смысл минимизировать JavaScript?

Моя теория заключается в том, что разница между сжатым уменьшенным файлом JavaScript и сжатым незавершенным файлом JavaScript незначительна.

Очень мало браузеров, которые не поддерживают сжатие.Я полагаю, что некоторые боты (пауки) могут не поддерживать сжатие (я знаю, по крайней мере, одного), но они вряд ли будут «заинтересованы» в вашем JavaScript, поскольку они вряд ли будут выполнять JS и поэтому не должны его загружать.

Ответы [ 8 ]

28 голосов
/ 13 июля 2010

Давайте просто проверим это.Я использовал jQuery 1.4.2 и gzip (без флагов; -9, похоже, не имеет существенного значения), чтобы получить следующие числа.

  • Разработка: 163 855 байт
  • РазработкаСжатый: 45 994 байт
  • Сокращенный: 72 174 байт
  • Сжатый: сжатый: 24 565 байт

Итак,в этом конкретном случае минификация делает файл почти в два раза меньше.По общему признанию, выпуск разработки полон комментариев.Давайте разберемся с ними и посмотрим, что произойдет:

  • Раздетый: 131 155 байт
  • Разобранный, сжатый: 32 914 байт

Это все еще значительно больше, чем уменьшенная версия.

2 голосов
/ 13 июля 2010

Я попытался заархивировать jquery-1.3.2 как в оригинальной, так и в минимизированной версиях:

jquery-1.3.2.js      118 kb  ->  36 kb
jquery-1.3.2.min.js   56 kb  ->  20 kb

Итак, минимизация перед сжатием делает существенную разницу.

2 голосов
/ 13 июля 2010

Если файл будет сокращен до того, как вы запустите gzip, он немного изменит производительность сервера, хотя я сомневаюсь, что это очень много. Минификация удалит комментарии, которые gzip / deflate не будет, но кроме этого я бы сказал, что вы правы.

Конечно, всегда есть IE6. По моему опыту, этот браузер ненадежен, когда дело доходит до gzipped чего-либо, кроме text / html. Это почти до такой степени, что это не имеет значения, поскольку использование IE6 продолжает падать.

1 голос
/ 13 июля 2010

Я считаю, что минимизированная версия будет работать быстрее.Переменная теперь имеет длину 1-2 символа, поэтому анализ выполняется быстрее, пробелы и комментарии не являются проблемой.Конечно, вам нужно разработать тест, чтобы иметь возможность сообщить о любой разнице.

Сжатие для мобильной платформы имеет свои плюсы и минусы.Да, он загружается немного быстрее, но распаковка действительно расходует заряд батареи.

- Дейв

0 голосов
/ 14 июля 2010

Имейте в виду, что минификация на самом деле отбрасывает информацию.Пробелы / комментарии / длинные имена переменных / и т.д. ... полностью отбрасываются (и не могут быть восстановлены).

С другой стороны, сжатие сервера должно быть без потерь, поэтому оно можетне выбрасывайте информацию.Он может только сжимать это.

Сжатие сервера, следовательно, не может (теоретически) достичь тех же уровней сжатия, которые могут (теоретически) минимизировать.

Помните, что хотя теория и практика теоретически совпадают, в практике они никогда не равны .: -)

0 голосов
/ 13 июля 2010

Посетите сайт разработчика Yahoo - http://developer.yahoo.com/performance/rules.html - чтобы узнать, почему минимизация вместе со сжатием - это хорошо. Кроме того, посмотрите что-нибудь от Стива Соудерса ( Высокопроизводительные веб-сайты - потрясающий сайт и книга!).

Я бы избегал запутывания, если вы действительно не хотите выжать из своих сценариев как можно больше. Запутывание, в зависимости от того, как вы написали свой JavaScript, может привести к ошибкам. Вам может быть лучше просто минимизировать и получить 80-90% пути.

Удачи!

0 голосов
/ 13 июля 2010

Вы также можете использовать компрессор / упаковщик JavaScript, который использует что-то вроде кодировки base-62 (например, this ).

Может превратить 72174 байта (jquery-1.4.2.min.js) в 50640 байтов. Однако дальнейшее сжатие не улучшит сжатие по сравнению с прямым сжатием уменьшенного файла (также 24K).

(Вам также может понадобиться сохранить заголовки лицензии, если вы используете компрессор / упаковщик, в этом примере около 400 байт).

0 голосов
/ 13 июля 2010

Каждый байт имеет значение.Чем больше вы экономите, тем лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...