Если Ваш веб-сайт имеет, выкачивают/архивируют включенное сжатие, там какая-либо точка к минификации JavaScript?
Моя теория состоит в том, что различие между сжатым уменьшенным файлом JavaScript и сжатым неуменьшенным файлом JavaScript незначительно.
Существует очень немного браузеров, оставленных там, которые не поддерживают сжатие. Я предположил бы, что некоторые боты (пауки) не могли бы поддерживать сжатие (я знаю о по крайней мере одном), но они вряд ли будут интересоваться Вашим JavaScript, поскольку они вряд ли будут выполнять JS и так не должны загружать его.
Давайте просто протестируем это. Я использовал jQuery 1.4.2 и gzip (без флагов; -9
, похоже, не имеет существенной разницы), чтобы получить следующие цифры.
Таким образом, в данном конкретном случае минификация делает файл почти вдвое меньше. Разумеется, релиз разработки изобилует комментариями. Давайте удалим их и посмотрим, что получится:
Это все равно значительно больше, чем минифицированная версия.
Я считаю, что уменьшенная версия будет работать быстрее. Переменная теперь имеет длину 1-2 символа, поэтому синтаксический анализ выполняется быстрее, пробелы и комментарии не являются проблемой. Конечно, вам нужно будет разработать тест, чтобы иметь возможность определить какие-либо различия.
У сжатия для мобильной платформы есть свои плюсы и минусы. Да, он загружается немного быстрее, но распаковка действительно расходует заряд батареи.
- Дэйв
На счету каждый байт. Чем больше вы экономите, тем лучше.
Вы также можете использовать компрессор / упаковщик JavaScript, который использует что-то вроде кодировки base-62 (например, this ).
Он может превратить 72174 байта (jquery-1.4.2.min.js) примерно в 50640 байтов. Однако его дальнейшее сжатие не улучшит сжатие по сравнению с прямым сжатием минифицированного файла (тоже 24 КБ).
(Вам также может потребоваться сохранить заголовки лицензий, если вы используете компрессор / упаковщик, около 400 байт в этом примере).
Минификация файла перед его зипованием даст небольшую разницу в производительности сервера, хотя я сомневаюсь, что она будет значительной. Минификация удаляет комментарии, чего не делает gzip/deflate, но в остальном я бы сказал, что вы правы.
Конечно, всегда есть IE6. По моему опыту, этот браузер ненадежен, когда речь идет о gzip-файлах, отличных от text/html. Хотя сейчас это уже почти не имеет значения, поскольку использование IE6 продолжает падать.
Я попытался застегнуть jquery-1.3.2 как в оригинальной, так и в минифицированной версии:
jquery-1.3.2.js 118 kb -> 36 kb
jquery-1.3.2.min.js 56 kb -> 20 kb
Таким образом, минификация перед сжатием действительно имеет существенную разницу.
Посетите сайт разработчиков Yahoo - http://developer.yahoo.com/performance/rules.html - чтобы узнать, почему минимизация вместе со сжатием хорошо. Также посмотрите что-нибудь от Стива Содерса ( Высокопроизводительные веб-сайты - отличный сайт и книга!).
Я бы избегал обфускации, если вы действительно не хотите выжать из своих скриптов как можно больше. Обфускация, в зависимости от того, как вы написали свой JavaScript, может привести к ошибкам. Возможно, вам будет лучше просто минимизировать и пройти 80-90% пути.
Удачи!
Имейте в виду, что минификация на самом деле отбрасывает информацию. Пробелы / комментарии / длинные имена переменных / и т. Д. полностью отброшены (и не могут быть восстановлены).
Серверное сжатие, с другой стороны, должно быть без потерь, поэтому оно не может отбросить какую-либо информацию. Он может только сжать его.
Таким образом, сжатие на сервере не может (теоретически) достичь тех же уровней сжатия, которые может достичь минификация (теоретически).
Помните, хотя теория и практика теоретически одинаковы, в практике они никогда не . : -)