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

Есть ли какой-нибудь момент для минимизации JavaScript, если вы включили сжатие?

Если на вашем веб-сайте включена функция deflate/zip compression, есть ли какой-нибудь момент для минимизации JavaScript?

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

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

4b9b3361

Ответ 1

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

  • Разработка: 163,855 байт.
  • Разработка, сжатие: 45,994 байт
  • Мини-код: 72,174 байт.
  • Minified, сжатый: 24,565 байта

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

  • Stripped: 131,155 байт
  • Stripped, сжато: 32 914 байтов

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

- Дэйв

Ответ 5

Каждый байт подсчитывается. Больше вы экономите, лучше.

Ответ 6

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

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

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

Ответ 7

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

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

Удачи!

Ответ 8

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

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

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

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