Купи доменное имя для своего блога, персональной web-странички или нового интернет проекта по выгодным ценам. Зарегистрировать домен в зоне .РФ или .RU за 195 руб.

Обфускатор JavaScript`а

Недавно я стал использовать фреймворк ProtoType. Он всем хорош, но есть у него один минус — его размер. версия 1.5 весит под 70кб, версия 1.4 — 47кб. А это довольно много для среднего сайта. Поэтому и встала задача уменьшить размер этого добра.

Первое, о чём я подумал — это gzip. Сжать содержимое — дело пустяковое, для веб сервера apache есть специальный модуль mod_deflate. Но этого мало, надо уменьшать сам код. И тут я вспомнил о такой замечательной вещи как обфускация.

Обфускация — это не только процесс запутывания кода программы, но и возможность его уменьшения. Поискав в инете я нащёл неплохие реализации — это JSMin и Packer. Первый не умеет делать Shrink (уменьшение длины переменных) а второй написан на самом JavaScript`е :-)

Потратив целый день, в итоге я написал свой на основе JSMin с некоторыми оптимизациями и уменьшением длины локальных переменных и параметров функций. В итоге код уменьшился с 47кб до 28кб а при сжатии в gzip — вообще упал до 7.6кб

Регистрация доменов .РФ или RU за 195р!!!
Совместно с регистратором onreg.ru мы проводим акцию! Купи домен для своего блога или нового интернет проекта по выгодным ценам. Так домен в зоне .RU или .РФ стоит всего 195 рублей. При покупке нескольких доменов, возможны скидки. На onreg.ru есть система тикетов, через которую мы всегда готовы ответить на все ваши вопросы и предложения.


Комментарии
  • Sergey — 09.07.2007 #1
    Мда, новые версии весят много, лучше действительно использовать старые... особенно, если нет необходимости в том, что появилось в этих самых новых версиях
  • tenshi — 24.11.2007 #2
    http://joliclic.free.fr/php/javascript-packer/en/
  • blacknot — 27.11.2007 #3
    tenshi, спасибо за альтернативы, гляну на досуге, а так тоже основан на работе Dean Edwards`а. Жаль я не нащёл это в своё время :)
  • jMas — 08.05.2008 #4

    Здравствуйте, да… порт получился неплохой, но все же попробовал поставить на поток обфускацию своих скриптов Ext Js и сразу запара…

    Например я обращаюсь за динамической подгрузкой скрипта к module.php?script=scriptName Предполагается, что scriptName это переменная. После обфускации эта переменная может упроститься до «a». Хорошо было бы добавить правило по которому переменные определенного вида не будут подлежать обфускации.

  • alpha — 20.11.2008 #5

    Есть баг. Неправильно происходит shrink в некоторых случаях:

    set : function(mValue) {

    		this.mValue = typeof(mValue) == 'string'?
    			mValue :
    			mValue.toString()
    			;
    	}


    превращается в :

    set:function(b){this.mValue=typeof(b)==‘string’?mValue:b.toString();}

  • Search — 13.08.2010 #6

    Где обфускатор то? Куда код вставлять?

  • Константин — 03.11.2010 #7

    Проект закрылся, рекомендую использовать обфускатор от Yahoo — yuicompressor

Оставить комментарий
Ваше имя:
E-mail:
Сайт (блог):
Сообщение:
Если вы не робот, введите код: