Есть ли какой-нибудь момент для минимизации JavaScript, если вы включили сжатие?
Если на вашем веб-сайте включена функция deflate/zip compression, есть ли какой-нибудь момент для минимизации JavaScript?
Моя теория заключается в том, что разница между сжатым мини файлом JavaScript и сжатым неустановленным файлом JavaScript незначительна.
Очень мало браузеров, которые не поддерживают сжатие. Я бы предположил, что некоторые боты (пауки) могут не поддерживать сжатие (я знаю хотя бы один), но они вряд ли будут "заинтересованы" в вашем JavaScript, поскольку они вряд ли будут выполнять JS, и поэтому не следует загружать его.
Ответы
Ответ 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 может (теоретически) достичь.
Помните, что, хотя теория и практика теоретически одинаковы, на практике они никогда не бывают.: -)