Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Optimize: оптимизатор HTML/XML/JS/CSS кода на PHP (Rin)
Author Message
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Mon Jun 18, 2007 10:14 pm (написано за 21 минуту 35 секунд)
   Post subject: Optimize: оптимизатор HTML/XML/JS/CSS кода на PHP
Reply with quote

Оптимизатор HTML/XML/JS/CSS кода на PHP.
The optimizer of HTML/XML/JS/CSS code on PHP.

Назначение
Оптимизация сгенерированного PHP скриптом HTML/XML/JS/CSS кода перед выводом в браузер, оптимизация "на лету".

Возможности оптимизатора HTML/XML кода
  1. удаляет пробелы вначале и в конце переносов строк
  2. удаляет пробелы ПОСЛЕ открывающих тагов, если перед тагом есть пробел
  3. удаляет пробелы ПЕРЕД закрывающими тагами, если после тага есть пробел
  4. удаляет многострочные или большие html комментарии, комментарии в javascript и стилях.
  5. корректно обрабатывает таги <pre>, <textarea>, <code>, <nooptimize>
  6. специальный таг <nooptimize> на выходе вырезается.
.
Особенности оптимизатора HTML/XML кода
Ценность этого оптимизатора в том, что он аккуратен к html коду с формами ввода,
"с умом" вырезает комментарии вида <!--...--> и // в <script>...</script>.
Верстальщики могут временно/навсегда комментировать большие участки html кода,
писать пояснительные комментарии для себя, не опасаясь за размер выходного файла.

С параметрами по умолчанию Optimize::html() даёт приемлемое сжатие за небольшое время работы,
(баланс между степенью сжатия и скоростью работы) для использования оптимизации "на лету".

Пример использования:
Code (php): скопировать код в буфер обмена
ob_start (www.php.net/ob_start)(array (www.php.net/array)('Optimize', 'html'));
Никогда не экономьте на отступах и пробелах в написании кода и ваш КПД увеличится! :)

С параметрами по умолчанию программа даёт приемлемое сжатие за небольшое время работы,
(баланс между степенью сжатия и скоростью работы) для использования оптимизации "на лету".

@tags php, html, xml, js, javascript, css, cleaner, clean, cleanse, clear, cruncher, optimize, optimizer, purge, obfuscate, vacuum, vacuumize


Optimize-2.3.4.7z
 Description:

Download
 Filename:  Optimize-2.3.4.7z
 Filesize:  8.8 KB
 Downloaded:  2789 Time(s)



Last edited by Rin on Fri Nov 27, 2009 11:24 am; edited 17 times in total
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Tue Dec 30, 2008 12:13 pm (спустя 1 год 6 месяцев 11 дней 13 часов 59 минут; написано за 1 минуту 21 секунду)
   Post subject:
Reply with quote

2.2.0
  1. В обычном режиме увеличена степень сжатия примерно на 10%, скорость при этом увеличена примерно в 2 раза!
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9997
   поощрить/наказать


PostPosted: Tue Dec 30, 2008 10:29 pm (спустя 10 часов 16 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «html_optimize (обсуждение)»,
расположенную в форуме Разное :: PHP (30 Декабря 2008, 22:29).
Back to top
View user's profile Send private message
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Thu Feb 26, 2009 5:16 pm (спустя 1 месяц 26 дней 18 часов 47 минут; написано за 55 секунд)
   Post subject:
Reply with quote

2.2.1
  1. Исправлены мелкие ошибки и немного увеличена степень сжатия.
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Thu Jun 25, 2009 10:26 am (спустя 3 месяца 26 дней 17 часов 9 минут; написано за 1 минуту 54 секунды)
   Post subject:
Reply with quote

2.3.3
  1. Функция переписана в класс, все методы вызываются статически
  2. Добавлена оптимизация CSS и JS
  3. Исправлены небольшие ошибки
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Mon Aug 03, 2009 5:03 pm (спустя 1 месяц 8 дней 6 часов 36 минут; написано за 21 секунду)
   Post subject:
Reply with quote

2.3.4 / 2008-07-20
  1. Улучшено сжатие CSS
  2. Улучшено сжатие HTML
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1298
Карма: 78
   поощрить/наказать


PostPosted: Tue Sep 08, 2009 1:54 pm (спустя 1 месяц 4 дня 20 часов 51 минуту; написано за 1 минуту 57 секунд)
   Post subject:
Reply with quote

Rin,
здравствуйте столкнулся с ошибкой синтаксической в JavaScript коде, при использовании
вашей обжималки (классная вещь (-:), о ней как раз написано в ТуДу:
Code (any language): скопировать код в буфер обмена
Когда планируете исправить? И есть ли какое-нибудь временное решение?

З.Ы. Я в качестве "костыля" закомментировал код метода javascript и написал return $s;
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Fri Sep 11, 2009 8:43 pm (спустя 3 дня 6 часов 48 минут; написано за 3 секунды)
   Post subject:
Reply with quote

Пока некогда этим заниматься.
Вообще я планировал внедрить JSMin (code.google.com/p/jsmin-php/).
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1298
Карма: 78
   поощрить/наказать


PostPosted: Wed Sep 23, 2009 6:46 pm (спустя 11 дней 22 часа 3 минуты; написано за 2 минуты 56 секунд)
   Post subject:
Reply with quote

Так, заметил проблему на сервере с ОС Debian, Apache 2.2.3, PHP 5.2.0-8+etch15.
В лог пишется вот такой ворнинг:
Quote:
[Wed Sep 23 19:36:23 2009] [error] [client 94.50.137.70] PHP Warning: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Compilation failed: unrecognized character follows \\ at offset 639 in /home/web/systemnik/mihalicyn.ru/www/libs/Optimize/Optimize.php on line 221
При чем страничка отображается белая (ну то есть в выходной поток ничего не выводится).

Проблему решил закомментировав вот этот фрагмент кода:
Code (php): скопировать код в буфер обмена
        #
        $s = preg_replace (www.php.net/preg_replace)('/ (?<=[\x03-\x20])
                             <[a-z][a-z\d]*+ (?<!<input|<img) '
. $re_attrs_fast_safe . ' >
                             \K  #any previously matched characters not to be included in the final matched sequence
                             [\x03-\x20]++
                           /sxiSX'
, '', $s);
Как вы думаете, в чем может быть проблема?
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Wed Sep 23, 2009 9:54 pm (спустя 3 часа 7 минут; написано за 1 минуту 49 секунд)
   Post subject:
Reply with quote

Проблема в старой версии библиотеки PCRE, которая не поддерживает \K.

Пробуйте так:
Code (php): скопировать код в буфер обмена
        #вырезаем пробелы ПОСЛЕ открывающих тагов, если перед тагом есть пробел (+0.001 sec.)
        $s = preg_replace (www.php.net/preg_replace)('/ (?<=[\x03-\x20])
                             (<[a-z][a-z\d]*+ (?<!<input|<img) '
. $re_attrs_fast_safe . ' >) #1
                             [\x03-\x20]++
                           /sxiSX'
, '$1', $s);
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1298
Карма: 78
   поощрить/наказать


PostPosted: Thu Sep 24, 2009 7:22 pm (спустя 21 час 28 минут; написано за 31 секунду)
   Post subject:
Reply with quote

Rin,
ага. Заработало.
Back to top
View user's profile Send private message Send e-mail
Avtorkoda
Заглянувший



Joined: 26 Nov 2009
Posts: 1
Карма: -2
   поощрить/наказать

Location: UA

PostPosted: Thu Nov 26, 2009 2:25 am (спустя 2 месяца 1 день 7 часов 3 минуты; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
span class="st0">'Optimize', 'html');
 *
Блин, скобку закройте же. Шапку обновите (летать так летать, писать так писать, но качество кода уже лучше) (С)


Не корректно обрабатывает (т.е. оставляет)
<!-- end searchbox //-->
<!-- end .grid_2 -->
<!--</div>-->

Также переносы лучше оставлять (они роли в сжатии не играют, а вот читабельность Source Code важна)
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1298
Карма: 78
   поощрить/наказать


PostPosted: Thu Nov 26, 2009 5:32 am (спустя 3 часа 6 минут; написано за 2 минуты 30 секунд)
   Post subject:
Reply with quote

Avtorkoda,
Quote:
Также переносы лучше оставлять (они роли в сжатии не играют, а вот читабельность Source Code важна)
По чему же не играют-то? Еще как играют!
Quote:
а вот читабельность Source Code важна
Ну вообще-то, библиотека предназначена для того, чтобы обжимать выходной поток,
а по этому читабельность кода тут не важна. То есть оригинальные файлы темплейтов у вас остаются с пробелами, и.т.п.
А выходной поток обжимается.
Back to top
View user's profile Send private message Send e-mail
Rin
Участник форума



Joined: 01 Jun 2005
Posts: 515
Карма: 180
   поощрить/наказать

Location: Москва

PostPosted: Fri Nov 27, 2009 11:26 am (спустя 1 день 5 часов 54 минуты; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

Avtorkoda

>скобку закройте же
ok

>Не корректно обрабатывает
так и должно быть, см. исходный код
Back to top
View user's profile Send private message Send e-mail
MixMe
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon May 24, 2010 5:27 pm (спустя 5 месяцев 27 дней 6 часов 44 секунды; написано за 57 секунд)
   Post subject:
Reply with quote

Вот отличный CSS оптимизатор:
www.optimizecss.com
Использую его постоянно, по cравнению с остальными он не ломает дизайн сайта
Back to top
AndreyWS
Заглянувший



Joined: 01 Jul 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Sun Jul 01, 2012 10:59 am (спустя 2 года 1 месяц 6 дней 17 часов 32 минуты; написано за 3 минуты 13 секунд)
   Post subject:
Reply with quote

Не удаляются в тексте html пробелы идущие более 2х подряд, которые в браузере трактуются как один.
Исправил добавлением строки:
Code (php): скопировать код в буфер обмена
#
$a = preg_split (www.php.net/preg_split)('/ (
                    (?> <\/?+(?:br|p|div|li|ol|ul|table|t[drh]|meta|link|h[1-6]|form|option|select|title|script|style|map|area|head|body|html)'
. $re_attrs_fast_safe . '>
                      | <!--\[if [^\]]++ \]>
                      | <!\[endif\]-->
                     )
                     (?:<\/?+noindex>)?+
                    )
                   /sxiSX'
, $s, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$s = implode (www.php.net/implode)('', array_map (www.php.net/array_map)('trim', $a));

#
$s = preg_replace (www.php.net/preg_replace)('/[\x03-\x20]+/', "\x20", $s); #

#
$s = preg_replace (www.php.net/preg_replace)('/ (?<=[\x03-\x20])
                     <[a-z][a-z\d]*+ (?<!<input|<img) '
. $re_attrs_fast_safe . ' >
                     \K  #any previously matched characters not to be included in the final matched sequence
                     [\x03-\x20]++
                   /sxiSX'
, '', $s);
Back to top
View user's profile Send private message
KarinaS
Заглянувший



Joined: 26 Jun 2011
Posts: 4
Карма: -3
   поощрить/наказать

Location: Киев

PostPosted: Tue Sep 04, 2012 2:26 pm (спустя 2 месяца 3 дня 3 часа 26 минут; написано за 3 минуты 38 секунд)
   Post subject:
Reply with quote

Александр Михалицын wrote:
Ну вообще-то, библиотека предназначена для того, чтобы обжимать выходной поток,
а по этому читабельность кода тут не важна. То есть оригинальные файлы темплейтов у вас остаются с пробелами, и.т.п.
А выходной поток обжимается.
Ну а смысл такой "оптимизации"? Каждый раз сервер напрягать для этого процесса? Если можно сами шаблоны оптимизировать...
Back to top
View user's profile Send private message
nick1
Заглянувший



Joined: 31 Oct 2013
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Thu Oct 31, 2013 2:30 pm (спустя 1 год 1 месяц 27 дней 4 минуты; написано за 3 минуты 38 секунд)
   Post subject:
Reply with quote

Александр Михалицын
Quote:
здравствуйте столкнулся с ошибкой синтаксической в JavaScript коде, при использовании
вашей обжималки (классная вещь (-:), о ней как раз написано в ТуДу: Code (any language): скопировать код в буфер обмена
 * TODO
 * исправить ошибку в методе javascript():
 * }};else -- точка с запятой перед else стоять не может

 Когда планируете исправить? И есть ли какое-нибудь временное решение?

З.Ы. Я в качестве "костыля" закомментировал код метода javascript и написал return $s;
там по идее опечатка (ошибка) точка с запятой после ссылки на карман
Code (php): скопировать код в буфер обмена
return preg_replace (www.php.net/preg_replace)('/ ;++ (\}++) $/sxSX', '$1;', $s);
по ходу автор автоматом по привычке поставил, без неё всё ок, по логике, эта строка удаляет лишние ";", а получается, что меняет их местами с фигурными скобками
вообщем нужно
Code (php): скопировать код в буфер обмена
return preg_replace (www.php.net/preg_replace)('/ ;++ (\}++) $/sxSX', '$1', $s);
вместо
Code (php): скопировать код в буфер обмена
return preg_replace (www.php.net/preg_replace)('/ ;++ (\}++) $/sxSX', '$1;', $s);
у меня всё работает, пробовал и jquery и другие либы сжатые и нет
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML