LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 04:39:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Обфускация и минимизация скриптов  (Прочитано 2044 раз)
0 Пользователей и 1 Гость смотрят эту тему.
..С...е...р...ы...й..
Завсегдатай
*****

Репутация: +108/-2
Offline Offline

Сообщений: 531



« : 31.08.2009, 17:23:29 »

Юзаю обфускатор:
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, как его заюзать?
Записан
userxp
Администратор
*******

Репутация: +400/-6
Offline Offline

Пол: Мужской
Сообщений: 3227


Злой и ужасный бармалей


« Ответ #1 : 31.08.2009, 21:01:27 »

Могут быть какие нибудь проблемы с таким порубленным кодом?
да. не используй shrink variables
и желательно после упаковки проверять

И еще я часто слышу про gzip, как его заюзать?
gzip - это имеется ввиду YUI
Записан
Darkick
JComments Tester
*

Репутация: +236/-1
Offline Offline

Пол: Мужской
Сообщений: 1486



« Ответ #2 : 31.08.2009, 23:26:01 »

Скачал оттуда же Packer for .NET. Можно им и CSS жать, но на них экономия конечно совсем не такая.
А вообще хорошая наводка, попробую на сайте посмотреть - нормально ли робит.
Записан
..С...е...р...ы...й..
Завсегдатай
*****

Репутация: +108/-2
Offline Offline

Сообщений: 531



« Ответ #3 : 02.09.2009, 16:19:04 »

Cамый оптимальный и надежный способ - это комбинация (минимизация + gzip)
- минимизация - это метод при котором удаляются комментарии пробелы и пустые строки, не нарушая при этом целостности кода, не сокращая переменные, поэтому код остается полностью работоспособным.
- gzip предварительное сжатие всех стилей и скриптов, без нагрузки на сервер. Скрипты можно по сжимать "тоталом", например.
А в местах подключения не забыть подописывать расширения  тра-та.js.gz

Так достигнуо сжатие встроенной библиотеки mootools до 19,5 кб.

Сервисы сжатия CSS:
http://compressor.ebiene.de
http://www.cssdrive.com/index.php/main/csscompressor
http://www.cssoptimiser.com
http://iceyboard.no-ip.org/projects/css_compressor
http://www.cleancss.com
http://floele.flyspray.org/csstidy/css_optimiser.php

Еще советую почитать:
http://apachedev.ru/2007/09/19/5-prostyih-sposobov-uskoreniya-sayta/
http://joomlaforum.ru/index.php/topic,68370.0.html
Записан
PaLyCH
Живу я здесь
******

Репутация: +139/-14
Offline Offline

Пол: Мужской
Сообщений: 1369


Архитектор сайтов


« Ответ #4 : 19.10.2009, 21:27:44 »

Сервисы сжатия CSS:
По поводу сжатия CSS. Стоит быть внимательным и обязательно после сжатия проверять работоспособность кода. Если у вас есть хаки для разных браузеров, то скорее сжиматоры могут их удалить
Записан
Rikh
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 134


« Ответ #5 : 24.11.2009, 10:24:50 »

Cамый оптимальный и надежный способ - это комбинация (минимизация + gzip)
- минимизация - это метод при котором удаляются комментарии пробелы и пустые строки, не нарушая при этом целостности кода, не сокращая переменные, поэтому код остается полностью работоспособным.
- gzip предварительное сжатие всех стилей и скриптов, без нагрузки на сервер. Скрипты можно по сжимать "тоталом", например.
А в местах подключения не забыть подописывать расширения  тра-та.js.gz

Так достигнуо сжатие встроенной библиотеки mootools до 19,5 кб.

Если не сложно расскажите пожалуйста подробнее об этом. Что и как нужно сделать. Смотрю на некоторых сайтах mootools действительно 20 кб. Сам я такого результата достичь не смог. Как только не пытался сжать не вышло. Если не сложно объясните на пальцах как и что делать надо.
Даже может готовый сжатый mootools прицепить можно. У меня Joomla 1.5.12. Очень беспокоит оценка E от Yslow. Когда на сайт заходят 30+ пользователей разом, из которых половина гости, хостер отключает сайт за превышение 10% лимита нагрузки.
Буду очень благодарен за любую помощь.
Записан
Darkick
JComments Tester
*

Репутация: +236/-1
Offline Offline

Пол: Мужской
Сообщений: 1486



« Ответ #6 : 24.11.2009, 11:05:16 »

Даже может готовый сжатый mootools прицепить можно. У меня Joomla 1.5.12. Очень беспокоит оценка E от Yslow. Когда на сайт заходят 30+ пользователей разом, из которых половина гости, хостер отключает сайт за превышение 10% лимита нагрузки.
Ну в данном случае сжатие JS не поможет отбиться от хостера.
Записан
beliyadm
Профи
********

Репутация: +1438/-61
Offline Offline

Пол: Мужской
Сообщений: 8893


Севастополь==Россия


« Ответ #7 : 24.11.2009, 11:20:00 »

Ну в данном случае сжатие JS не поможет отбиться от хостера.
сжатие нет, но оптимизация может дать несколько процентов к скорости работы сайта (объединение к примеру 10 отдельных JS в один с целью уменьшения кол-ва http запросов, тоже самое касается и CSS). А то нередко встречаешь сайты (особенно на клубных шаблонах и\или бездумная установка всех подряд расширений и на выходе по 15 js и десяток CSS грузится
Записан
Rikh
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 134


« Ответ #8 : 25.11.2009, 22:57:28 »

Спасибо за советы. Поставил Web Optimizer. Все скрипты слил и сжал, тоже самое и с CSS. В итоге получил грейд "C" по Yslow. After render 0.7, запросов 23.  Yes! На сайт вошло 50 человек и что я вижу, снова не дышит. Позвонил хостеру, сказали стало лучше но все равно много. Вот думаю податься куда нибудь на американский или турецкий хостинг. Знаю сайты на Joomla которые висят на турецких серверах, тяжелые как беременная слониха но летают, и не страшны им никакие тысячи запросов.  !
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet