Чому корисність HTML / Javascript вигідна


14

Чому мінімізація HTML / Javascript вигідна, коли протокол HTTP вже підтримує стиснення даних gzip?

Я усвідомлюю, що мінімізація JavaScript / HTML може потенційно значно зменшити розмір файлів Javascript / HTML, видаливши непотрібний пробіл і, можливо, перейменувавши змінні на кілька літер кожна, але чи не алгоритм LZW особливо добре, коли багато повторюється символів (наприклад, багато пробілів?)

Я розумію, що деякі інструменти мінімізації Javascript роблять більше, ніж просто зменшують розмір. Наприклад, компілятор закриття Google також намагається покращити ефективність коду, вбудувавши функції та зробивши інші аналізи. Але основною метою мінімізації Javascript зазвичай є зменшення розміру файлу.

Я також усвідомлюю, що є й інші причини, за якими ви можете відмовитися від перформації, наприклад, затухання коду. Але знову ж таки, ця причина зазвичай не наголошується настільки, як збільшення продуктивності та зменшення розміру файлу. Наприклад, компілятор закриття не рекламується як засіб обфускування, а як зменшення розміру коду та посилювач швидкості завантаження.

Отже, яку ефективність ви дійсно отримуєте від мінімізації Javascript / HTML, коли ви вже значно зменшуєте розмір файлу за допомогою стиснення gzip?

Відповіді:


11

Оскільки стиснення gzip має власні накладні витрати (ЦП). Мініфікація - це перша «низько висяча» компресія, яку можна застосувати без удару процесора.

Це може здатися незначним, проте цифри незабаром мають сенс, коли йдеться про масштаб.

Крім того, з мінімізацією у вас менше gzip.


3
Чи дійсно сучасні веб-сервери gzip файли javascript для кожного запиту? Здається, що сервер буде кешувати статичний gzipped вміст, оскільки він навряд чи зміниться.
aaberg

@aaberg Тим не менш, це більше кешованих даних на сервері. (не те, що кешування не добре)
озноб42

@ chilis42: Сервери можуть подавати попередньо gzipped файл із самої файлової системи, якщо в цьому проблема.
herby

+1 для масштабу. Якщо у вас 10 користувачів і 100 звернень в день, це непотрібно. Якщо вам потрібно сервер 100 ударів за годину, це значна економія.
SoylentGray

2
Щось мені підказує, що запуск повномасштабного компілятора JavaScript та декілька оптимізацій працює на внутрішньому представництві, і все це часто реалізовано на Java - це не низькі накладні витрати ЦП .
Олег Вікторович Волков

5

Мінімізація + gzip, як правило, дає кращі результати, оскільки gzip - це загальний алгоритм, не спеціально адаптований до того чи іншого вводу, в той час як minificator знає про його вміст і може працювати, що загальний алгоритм стиснення не може. Він може дозволити собі втратити також (подумайте: повністю виключити коментарі та пробіли - це 100% стиснення цих даних, як ви можете це перемогти?), Тоді як загальне стиснення не може.


2

Можливо, ви не отримаєте занадто велику користь від продуктивності, але все одно зменшите використання пропускної здатності. Якщо ви можете поголити кілька кб своїх js (та css) файлів за допомогою мінімізації (та використання css-спрайтів для зменшення кількості запитів), і ви обслуговуєте 1000 користувачів на день, через місяць ви значно зменшите пропускну здатність.


1
+1: мінімізація - це економія в цілому. Це може допомогти індивідуальному запиту бути швидшим, але суть його полягає в зменшенні використання пропускної здатності з часом.
Джоель Етертон

1

Найбільш дорога річ, яку ви робите в веб-додатку, - це надсилати речі вниз. Відправлення менше матеріалів по дроту майже завжди є чистою виграшю, якщо ви платите за цикли процесора.

Крім того, у мене немає нічого наукового, що б це підтвердило, але я би сподівався, що інструменти мінімізації можуть, мабуть, стискати JavaScript краще, ніж gzip, якщо з будь-якої іншої причини, ніж засоби мінімізації, не залежать від домену і можуть бути налаштовані на кращий стиснення JavaScript, тоді як gzip є загальним інструментом і піде на компроміс у середині.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.