реклама

сряда, 12 май 2010 г.

Javascript компресия

Днес се сблъсках с проблема с компресиране на javascript за пореден път. Исках да сменя JSMin(http://www.crockford.com/javascript/jsmin.html) с нещо друго, защото е адски бавен. Първо тръгнах с опити с minify(http://code.google.com/p/minify/), но се оказа, че въпреки по-доброто свиване на кода дава грешки поради лошото си разчитане на:
- коментари с //
- нов ред използван вместо ; . Този случай е интересен и най-общо е свързан с деклариране на функция във функция или if - else.
Няма как да преправя целия prototype да има ; след край на такава вградена функция, та потърсих YUI compressor(http://developer.yahoo.com/yui/compressor/). Оказа се невероятно решение- 5-6 пъти е по-бърз от JSMin, оптимизира наистина максимално, не се появяват грешки. Проблемът е един- писан е на Java и иска да се инсталира, съответно не се подържа от хостинг машини, което мен не ме бърка реално поради домашния сървър. В моя случай си го инсталирах през Synaptic на Ubuntu за секунди. Вика се лесно:
 - подава се с exec да минимизира кода. Аз лично не пускам обфускация.:
exec ('yui-compressor --type js --charset utf-8 -o [input_file] --nomunge [output_file]');
- подава се новия текст и се трие временния файл.
Съответно аз си пиша кеширано копие, за да не бавя всеки път подаването.
Та... Заключенията:
- JSMin е добър вариант за хостинг машини- бавен е и не оптимизира много, но не чупи кода
- Minify става за оптимизация на html и css перфектно, адски е бърз, за javascript засега се откажете от него. Даже inline кода в html се налага да се преправи, за да не гръмне, но там се пише малко код, така или иначе.
- YUI е най-доброто засега като скорост и резултат, иска самостоятелен сървър.

Няма коментари:

Публикуване на коментар