Недавно я стал использовать фреймворк ProtoType. Он всем хорош, но есть у него один минус его размер. версия 1.5 весит под 70кб, версия 1.4 47кб. А это довольно много для среднего сайта. Поэтому и встала задача уменьшить размер этого добра.
Первое, о чём я подумал это gzip. Сжать содержимое дело пустяковое, для веб сервера apache есть специальный модуль mod_deflate. Но этого мало, надо уменьшать сам код. И тут я вспомнил о такой замечательной вещи как обфускация.
Обфускация это не только процесс запутывания кода программы, но и возможность его уменьшения. Поискав в инете я нащёл неплохие реализации это JSMin и Packer. Первый не умеет делать Shrink (уменьшение длины переменных) а второй написан на самом JavaScript`е :-)
Потратив целый день, в итоге я написал свой на основе JSMin с некоторыми оптимизациями и уменьшением длины локальных переменных и параметров функций. В итоге код уменьшился с 47кб до 28кб а при сжатии в gzip вообще упал до 7.6кб
Регистрация доменов .РФ или RU за 195р!!!
Sergey 09.07.2007
#1
Здравствуйте, да… порт получился неплохой, но все же попробовал поставить на поток обфускацию своих скриптов Ext Js и сразу запара…
Например я обращаюсь за динамической подгрузкой скрипта к module.php?script=scriptName Предполагается, что scriptName это переменная. После обфускации эта переменная может упроститься до «a». Хорошо было бы добавить правило по которому переменные определенного вида не будут подлежать обфускации.
Есть баг. Неправильно происходит shrink в некоторых случаях:
set : function(mValue) {
this.mValue = typeof(mValue) == 'string'? mValue : mValue.toString() ;
}
превращается в :
set:function(b){this.mValue=typeof(b)==‘string’?mValue:b.toString();}
Где обфускатор то? Куда код вставлять?
Проект закрылся, рекомендую использовать обфускатор от Yahoo — yuicompressor