На каком этапе вы сжимаете / минимизируете JavaScript?
При сборке или "на лету" (возможно, с кэшированием), когда пользователи запрашивают страницы.
И каковы недостатки / преимущества каждого.
5 ответов
Когда сайт переходит с dev на живой сервер.
У меня всегда есть несжатая версия JS на сервере dev и свернутая версия на живом сервере.
Преимущество этого в том, что при разработке я могу столкнуться с проблемой JS и исправить ее очень просто, но мне нужно запускать каждый измененный скрипт через минимизатор, но для меня это не так уж и много.
Я полагаю, что на лету будет ненужным, если вы не добавляете динамические данные в JavaScript (в этом случае есть лучшие способы обойти это). Это просто ненужные расходы, которые только замедляют загрузку страницы.
Лично я бы сделал это при развертывании / сборке приложения, это действительно одноразовая вещь.
При сборке или развертывании на этапе среды хорошее время для сжатия JavaScript. Таким образом, у вас будет возможность протестировать его в рабочей среде и отследить любые ошибки, которые могут произойти.
Иногда при сжатии возникают ошибки. Возможно, вы захотите включить версию jslint для командной строки, которая выполняется перед сжатием, чтобы убедиться, что js проходит. Это минимизирует, но не устраняет все ошибки сжатия.
Я бы сказал, что у вас есть js-файлы, которые вы кодируете в системе управления исходным кодом, когда вы запускаете автоматическую сборку, когда в рамках вашего скрипта сборки он запускает все файлы javascript через компрессор. Таким образом, когда вы развертываете его в тестовой / промежуточной среде, у вас есть новейший сценарий, но он также сжимается для тестирования производительности и так же, как и после запуска в производство.
Я согласен, что на лету, вероятно, на самом деле не нужно (и съедает несколько циклов процессора), если JS не меняется.
Однако может быть задействовано некоторое промежуточное программное обеспечение, которое может проверить, изменился ли JS, и сжать его только по запросу (и, возможно, даже сгруппировать различные файлы JS в один результирующий).
Хорошей вещью при развертывании может также быть добавление некоторой метки времени или случайной строки в качестве параметра к ссылке JS (например, .../scripts.js?t=cdkjnsccsds7sc8cshcsjhbcs
). Таким образом, когда JS изменяется, вы используете другую строку, и не будет проблем с кэшированием, потому что это новый URL. То же самое для CSS.