Упаковка Javascripts - стоит ли?

Если упакованный Javascript экономит 20 КБ от размера загрузки, но требует снижения производительности для распаковки, то есть ли какие-то преимущества, помимо запутывания кода?

Я сделал эту вики-страницу сообщества, потому что она может быть открыта для обсуждения.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
327
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Браузеры и HTTP-серверы по-прежнему не поддерживают gzip, сжатие и дефляцию кодирования содержимого? Если стоит заархивировать javascript, то, безусловно, стоит заархивировать все, и это проблема уровня HTTP, а не уровня сценария.

Steve Jessop 10.12.2008 05:05

Согласен, сжатие лучше, но сжатие минифицированного источника вдвое лучше. Ну, не совсем 200%, но суть вы поняли.

Robert Gould 10.12.2008 05:34

О да, я согласен, что минификация может иметь смысл. Просто спрашивающий говорит о «временной остановке браузера» для распаковки сценария, предполагая, что происходит что-то иное, кроме сжатия на уровне HTTP. Это не должно останавливать браузер.

Steve Jessop 10.12.2008 05:59

Да, для пользователя не должно быть заметной остановки, все это должно быть спрятано глубоко в глубине души, но не знать, какой браузер он использует :)

Robert Gould 10.12.2008 06:29

Может стоит отредактировать вопрос! И чтобы уточнить, я использую Firefox 3 в OS X

alex 10.12.2008 07:49
Ответ принят как подходящий

Упакованный код javascript обычно не требует больше времени для выполнения по сравнению с обычным кодом. Большинство упаковщиков кода сокращают переменные, имена функций и используют множество уловок, чтобы уменьшить размер исходного кода. Полученный исходный код полностью исполняемый! Вы можете убедиться в этом, взглянув на это во время выполнения с помощью firebug. Вы увидите выполнение сжатого кода в его свернутом виде.

упакованный js делает добавляет несколько миллисекунд выполнения (minified - нет), это можно измерить с помощью Firebug

Mauricio Scheffer 10.12.2008 05:14

Как вы используете Firebug для определения времени выполнения Javascript? Думаю, это новый вопрос!

alex 10.12.2008 05:45

Спрашивается, почему упаковка экономит 20кБ? Вам следует подумать о том, чтобы уменьшить размер вашего «обычного» javascript. Значительно ли улучшилась читаемость вашего кода за счет помещения пробелов вокруг операторов или использования очень длинных имен переменных и функций? Самая вопиющая трата пропускной способности, которую я видел на любом веб-контенте, скрипте, странице или CSS, - это отступы с пробелами. Если вам необходимо сделать отступ, используйте табуляцию или одиночные пробелы. Нет ничего более расточительного, чем сто строк подряд с 20+ пробелами в начале.

Оптимизируйте свой код для использования людьми. Однажды кому-то будет поручено поддерживать его, а вы не хотите, чтобы в ваших руках была месть. Упаковщики позволяют использовать лучшее из обоих миров. Согласованы по пробелам и табуляциям.

Bryan Watts 10.12.2008 04:52

Длинные последовательности пробелов очень эффективно обрабатываются сжатием gzip на уровне сервера. И если вы не архивируете свой JS-код, вы платите гораздо большую цену, чем вы бы сэкономили, изменив свой стиль отступа.

benjismith 10.12.2008 06:07

Вот почему у вас есть 3 файла: 1) исходный файл, который вы редактируете, 2) уменьшенная версия на сервере, 3) сжатая минифицированная версия на сервере. И вы настраиваете свой сервер для отправки сжатой версии, если клиент может ее обработать, или минифицированной версии. (продолжение)

some 19.12.2008 12:44

Таким образом, вы получите хорошее сжатие только за счет проверки, существует ли файл, но без дополнительных циклов процессора для сжатия файла. А поскольку он предварительно сжат, вы можете получить наилучшее сжатие.

some 19.12.2008 12:46

Ребята из Yahoo's YSlow рекомендуют использовать как минификатор, так и сжатие gzip.

Минификатор удалит пробелы, укорачивает имена переменных и т. д. Таким образом, вы можете кодировать с правильным отступом и именами переменных, чтобы другие разработчики могли понять ваш код.

Сжатие gzip, вероятно, даже более ценно.

Предположительно, упакованный JavaScript (немного) более эффективен для отправки сервером, в то время как расходы на распаковку берут на себя клиент.

Если пользовательский интерфейс в обоих случаях эквивалентен, я бы выбрал упакованный JS.

Каждый раз, когда вы можете передать некоторую работу клиенту, не вызывая негативных эмоций у пользователей, сделайте это и воспользуйтесь преимуществами распределенных вычислений.

Другие вопросы по теме