Юзаю обфускатор:
http://dean.edwards.name/packer/Работает корректно, особенно по сравнению с YUI Compressor не переводит в знаки вопроса кириллицу, будь то ANSI или UTF-8.
У этого обфускатора есть две опции:
- Shrink variables (сокращение имен переменных)
- Base62 encode (так называемый packer)
Для примера я сжимал Mootols_Source.1.1.1 из Joomla 1.5.14, который весил 179Кб.
Без дополнительных опций происходит элементарная минимизаия, вес стал 71,8 кб - такой же размер как и сжатая версия в Joomla.
Фрагмент кода:
var MooTools={version:'1.11'};function $defined(obj){return(obj!=undefined)};function $type(obj){if(!$defined(obj)) return false;if(obj.htmlElement) return'element';var type=typeof obj;if(type=='object'&&obj.nodeName){switch(obj.nodeType){case 1:return'element';case 3:return(/\S/).test(obj.nodeValue)?'textnode':'whitespace'}}if(type=='object'||type=='function'){switch(obj.constructor){case Array:return'array';case
Далее я повторил с включенной опцией
Shrink variables - вес 63,7 кб. Такую же обработку используют yootheme для подмены встроенного mootools.
Фрагмент кода:
var MooTools={version:'1.11'};function $defined(a){return(a!=undefined)};function $type(a){if(!$defined(a)) return false;if(a.htmlElement) return'element';var b=typeof a;if(b=='object'&&a.nodeName){switch(a.nodeType){case 1:return'element';case 3:return(/\S/).test(a.nodeValue)?'textnode':'whitespace'}}if(b=='object'||b=='function'){switch(a.constructor){case Array:return'array';case
Далее метод
Base62 encode, результат 42,5 кб.
Пример:
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--) r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--) if(k[c]) p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('o dT={e6:\'1.11\'};k $6F(N){m(N!=aX)};k $F(N){B(!$6F(N)) m O;B(N.53) m\'G\';o F=78 N;B(F==\'2I\'&&N.cR){26(N.7q){Y 1:m\'G\';Y 3:m(/\\S/).2A(N.bd)?\'bL\':\'dJ\'}}B(F==\'2I\'||F==\'k\'){26(N.ab){Y 2y:m\'1x\';Y 7r:m\'5A\';Y 18:m\'4Q\'}
Как видно код совсем не разобрать.
Потом включил обе опции - Shrink variables и Base62 encode. Результат незначительный, по сравнению с предидущем - 40,3 кб
Пока все работает без изменений.
Могут быть какие нибудь проблемы с таким порубленным кодом?
И еще я часто слышу про gzip, как его заюзать?