Я создаю приложение AIR (так что время загрузки не оказывает большого влияния), сочетает ли и минимизирует ли все файлы javascript производительность? Как обфускация влияет на производительность.
Улучшен ли улучшенный javascript?
Ответ 1
Минимизация повышает производительность вашей страницы в целом за счет уменьшения времени загрузки (пусть и незначительно).
Ни минирование, ни обфускация не изменяют время выполнения любой воспринимаемой суммой для подавляющего большинства кода javascript.
Я рекомендую профилировать по этим причинам и многое другое. Минимизация нескольких сценариев вместе (например, jQuery и плагинов) может дать еще большую экономию.
Edit: Как указывалось, на ограниченных устройствах и/или с очень большими кодовыми базами минимизация может дать заметный результат.
Ответ 2
минификация
Минимизация улучшает производительность по двум причинам:
-
Уменьшен размер файла (поскольку он удаляет комментарии и ненужные пробелы), поэтому ваш script загружается быстрее. Даже если он встроен в
<head>
. -
Он анализируется быстрее, поскольку комментарии и пробелы не должны явно игнорироваться (поскольку их там нет).
Объединение
Я написал довольно много приложений для HTML/JS AIR, и из личного опыта объединение файлов не изменит ситуацию. Фактически, хорошей практикой является разделение script на основе определенных критериев (классы, глобальные функции, функции SQL и т.д.). Помогает сохранить их, когда проект становится слишком большим.
Obfuscation
Обфускация обычно представляет собой комбинацию переменных и переименования переменных. Это включает использование eval
, чтобы взорвать код еще раз. Это снижает производительность по очевидным причинам, но зависит от размера вашего кода.
Я бы предложил запустить тесты, чтобы понять это лучше всего для вашей конкретной ситуации.
[Отредактировано, чтобы включить особое внимание в приложения AIR]
Ответ 3
Минимизация не улучшает скорость, с которой JavaScript выполняется во время выполнения, и я считаю, что это вас действительно интересует. Фактически, если вы используете сжатие Packer Base64, это на самом деле медленнее при начальной загрузке.
Minification уменьшит размер JavaScript, уменьшив размер загружаемого приложения.
Ответ 4
Минимизация выводит все комментарии, избыточное пустое пространство и сокращает имена переменных. Это уменьшает время загрузки файлов JavaScript, поскольку они (как правило) намного меньше в файлах. Итак, да, это улучшает производительность.
Обфускация не должна отрицательно влиять на производительность.
Здесь приведена статья о YDN, в которой говорится о минимизации.
Ответ 5
Все здесь уже говорили о минификации, но никто не говорил о 2-й части вашего вопроса - комбинируя. Это, безусловно, улучшит производительность, возможно, даже больше, чем минимизирует.
Несколько файлов требуют нескольких HTTP-запросов, поэтому, когда вы помещаете их в один файл, требуется только 1 запрос. Это важно по двум причинам:
- каждому отдельному HTTP-запросу может потребоваться больше времени для загрузки по различным причинам маршрутизации, а 1 файл потенциально задержит ваше приложение.
- браузеры и другие клиенты имеют максимальный размер файлов, которые разрешено загружать одновременно из одного домена. В зависимости от количества файлов в вашем приложении это может означать, что клиент ставит их в очередь, тем самым увеличивая нагрузку.
Кроме того, помимо минимизации и объединения, вы должны абсолютно убедиться, что у вас есть какое-то сжатие на стороне сервера. Это может сохранить 90% или даже больше в количестве переданных байтов в зависимости от файлов.
Подробнее о сжатии (gzip, deflate) можно прочитать здесь: http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/.
Ответ 6
Я хотел бы опубликовать это как отдельный ответ, поскольку он несколько контрастирует с принятым:
Да, это делает разницу в производительности, так как сокращает время синтаксического анализа - и это часто критично. Для меня это было просто просто линейным по размеру, и я мог бы получить его от 12s до 4s parse time, уменьшив с 3MB до 1MB.
Это не большое приложение, оно просто имеет несколько разумных зависимостей.
Итак, мораль этой истории здесь: Да, минимизация важна для производительности - и не из-за полосы пропускания, а из-за разбора.