Це - універсальне стиснення. Але є і специфічне, яке допомагає зменшити розмір в 2 і більше разів, у порівнянні з простим gzip.
Патчений Rhino стискає за рахунок двох основних операцій:
Щоб його використовувати, потрібні такі компоненти:
- встановлена Java
- бажано, щоб виконуваний файл java був на поточному шляху (PATH)
- Завантажити YUI Compressor
Стиснути файл myfile.js в myfile-min.js:
Також є ряд корисних опцій, про які Ви дізнаєтеся, запустивши:
Компресор також вміє стискати CSS, вставляти переноси рядків після кожної крапки з комою, або кожні NN символів, і т.д.
Якщо російські символи криво стискаються --- використовуйте опцію "charset".
Важливо: при стисканні, в цілях безпеки, YUICompressor НЕ буде стискати локальні змінні в усіх областях видимості, пов'язаних з викликами with і eval. Тому використовувати ці конструкції не рекомендується.
Packer робить наступне:
Наприклад, напустимо PHP-версію на скрипт:
Результат стиснення (все в один рядок):
Версія jQuery: 1.3.2. Це для прикладу, з тим же успіхом можна було взяти і іншу гілку.
У назві файлів
- min - рідна мініфікація jQuery. Той же результат виходить при мініфікаціі yui compressor 2.4.2
- packer - означає, що застосували PHP packer 1.1
- gz - звичайний gzip. Таким же gzipом стискає скрипти вебсервер.
Кілька суфіксів позначають два послідовно запущених компресії. Наприклад. min + .gz означає мініфіцірованний і потім gzip'ованний скрипт.
Майже всі сучасні браузери приймають від сервера gzip'ованние скрипти.
З таблиці видно, що найкращий результат досягається після мініфікаціі з подальшим gzip (jquery-1.3.2.min.js.gz).
Отже, кращий метод стиснення обраний як в теорії і перевірений на практиці. Це мініфікація скрипта. А gzip нехай робить сервер.
Цей інструмент заслужив окремий цикл статей: Google Closure Compiler в деталях.
Відповідно, рекомендація: Google Closure Compiler + GZIP. Причини ті ж.
- Версія для друку
Спасибо большое, дуже довго шукав.
Друзі, смію порадувати вас. Тепер по тій же посиланням доступна нова версія - яка до всього іншого стискає локальні змінні і не псує регулярні вирази, записані без лапок.
Я тестував програму на досить великих шматках коду. Але ось маленький прімерчік, з яким вона легко справляється:
function test () var varOut / * a * / = "opa";
function testIn (param) var str = varOut + "2, param:" + param;
return str.replace (/ p / i, '');
>
alert (testIn ( "!"));
>
А можете для PHP підказати компресор?
Може хто знає щось краще на PHP?